Neredeyse yüz varlık sınıflarının böyle bakıyor vardır: PropertyChanged
üzerine[Serializable] INotifyPropertyChanged uygulayıcısından düzenlenemeyen gözlemciler nasıl hariç tutulur?
[Serializable]
public class SampleEntity : INotifyPropertyChanged
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; FirePropertyChanged("Name"); }
}
[field:NonSerialized]
public event PropertyChangedEventHandler PropertyChanged;
private void FirePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
Bildirimi [field:NonSerialized]
niteliği. Bazı gözlemciler (benim durumumda - baskı için tüzel kişilikler gösteren bir ızgara) seri hale getirilemez ve varlık ayırıcı bir makinada çalışan bir uygulama tarafından sağlanabilir. .
Bu çözüm önemsiz durumlar için iyi çalışır. Bununla birlikte, gözlemcilerin bazılarının [Serializable]
olması ve korunmasının gerekmesi mümkündür. Bunu nasıl halledeyim?
Çözümler ben düşünüyorum:
- tam
ISerializable
- Sipariş seri bir sürü kod yazma gerektirir, bu [OnSerializing]
ve[OnDeserializing]
ellePropertyChanged
seri hale getirmek özellikleri kullanılarak yapmamayı tercih ediyorum - ama o yardımcı yöntemler (SerializationInfo
yaptığı)
invocation.Target (anonim delegeler için) boş olabilir, bu – skolima
için kontrol ettiğinizden emin olun Bu olayların XmlSerializer üzerinde hiçbir etkisi yoktur (iyi ol, ben sadece çalışmak için Remoting gerekiyordu). – skolima
OnSerializing ve OnDeserialized özel olmalı, bunları açığa çıkarmaya gerek yok. – skolima