2010-04-26 5 views
6

ObservableCollection'dan bir sınıf türetmeye çalışıyorum ve bu sınıfın herhangi bir örneğinin serileştirildiği her defasında yalnızca tek bir kod satırı çalıştırmam gerekiyor. Düşüncelerim bunu yapmaktı: Serileştirme ile ilgili temel yöntemlere erişem yok. Tüm serileştirmeyi el ile yeniden yazmam gerekiyor mu?Sınıfın herhangi bir kopyası seri hale getirildiğinde, C# sınıfı tanımında kodu nasıl çalıştırabilirim?

+0

Gerçekten belirtmelidir; Birden çok dahili ve üçüncü taraf seri hale getirme API'si vardır ve bunların her biri farklı kalıpları/kullanımları destekler. –

+0

İyi nokta. Ben yerleşik .NET ikili serileştirme kullanıyorum. –

cevap

15

OnDeserializedAttribute: "Bir yönteme uygulandığında, yöntemin nesnenin seri hale getirilmesinden hemen sonra çağrıldığını belirtir." yöntem ayrıca StreamingContext parametreyi kabul gerektiğini unutmayın: * Bir seri olan * nasıl

[Serializable] 
public class ObservableCollection2<T>: ObservableCollection<T> 
{ 
    [OnDeserialized()] 
    internal void OnDeserializedMethod(StreamingContext context) 
    { 
     this.DateDeserialized = DateTime.Now; 
    } 
} 
+0

İyi cevap, ancak birkaç çizgiyle bir örnek incitmez. –

+0

@Henk - yolda! –

+0

Harika! Teşekkürler! (S.S. ISerializable kaldırmalısınız) –

İlgili konular