Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulamanız nesneleri serileştirir ve seri durumdan kaldırırsa, çalışma zamanında gerekli meta verilerin mevcut olduğundan emin olmak için çalışma zamanı yönergeleri (.rd.xml) dosyanıza girdiler eklemeniz gerekebilir. İki seri hale getirici kategorisi vardır ve her biri çalışma zamanı yönergeleri dosyanızda farklı işleme gerektirir:
Yansıma tabanlı üçüncü taraf serileştiriciler. Bunlar çalışma zamanı yönergeleri dosyanızda değişiklik yapılmasını gerektirir ve sonraki bölümde açıklanmıştır.
.NET Framework sınıf kitaplığında bulunan yansıma tabanlı olmayan serileştiriciler. Bunlar çalışma zamanı yönergeleri dosyanızda değişiklik yapılmasını gerektirebilir ve Microsoft seri hale getiricileri bölümünde açıklanmıştır.
Üçüncü taraf serileştiriciler
Newtonsoft.JSON dahil olmak üzere üçüncü taraf serileştiriciler genellikle yansıma tabanlıdır. Serileştirilmiş verilerin ikili büyük nesnesi (BLOB) verildiğinde, verilerdeki alanlar, hedef türdeki alanların isimlerine göre kontrol edilerek somut bir türe atanır. En azından bu kitaplıkları kullanmak, bir koleksiyonunda seri hale getirmeye veya seri durumdan çıkarmaya çalıştığınız her Type nesnesi için List<Type> özel durumlarına neden olur.
Bu seri hale getiriciler için eksik meta verilerin neden olduğu sorunları çözmenin en kolay yolu, serileştirmede kullanılacak türleri tek bir ad alanı (örneğin App.Models) altında toplamak ve buna bir Serialize meta veri yönergesi uygulamaktır:
<Namespace Name="App.Models" Serialize="Required PublicAndInternal" />
Örnekte kullanılan söz dizimi hakkında bilgi için bkz: <Ad Alanı> Öğesi.
Microsoft seri hale getiricileri
DataContractSerializer, DataContractJsonSerializerve XmlSerializer sınıfları yansımaya bağımlı olmasa da, seri hale getirilecek veya seri durumdan çıkarılacak nesneye göre kod oluşturulmasını gerektirir. Her bir serileştirici için fazla yükleme yapılmış yapıcılar, serileştirilecek veya seriden çıkartılacak türü belirten bir Type parametresi içerir. Kodunuzda bu türü nasıl belirttiğiniz, sonraki iki bölümde açıklandığı gibi gerçekleştirmeniz gereken eylemi tanımlar.
oluşturucuda kullanılan typeof
Bu serileştirme sınıflarının bir oluşturucuyu çağırır ve C# typeof işlecini yöntem çağrısına eklerseniz, ek bir iş yapmanız gerekmez. Örneğin, aşağıdaki çağrıların her birinde bir serileştirme sınıfı oluşturucusunda typeof anahtar sözcük oluşturucuya geçirilen ifadenin bir parçası olarak kullanılır.
XmlSerializer xmlSer = new XmlSerializer(typeof(T));
DataContractSerializer dataSer = new DataContractSerializer(typeof(T));
DataContractJsonSerializer jsonSer = new DataContractJsonSerializer(typeof(T));
.NET Native derleyicisi bu kodu otomatik olarak işler.
oluşturucu dışında kullanılan typeof
Eğer bu serileştirme sınıflarının bir oluşturucusunu çağırırsanız ve C# typeof işlecini, oluşturucunun Type parametresine sağlanan ifade dışında kullanırsanız - aşağidaki kodda olduğu gibi - .NET Native derleyicisi türü çözümleyemez:
Type t = typeof(DataSet);
XmlSerializer ser = new XmlSerializer(t);
Bu durumda, aşağıdakine benzer bir girdi ekleyerek çalışma zamanı yönergeleri dosyasında türünü belirtmeniz gerekir:
<Type Name="DataSet" Browse="Required Public" />
Benzer şekilde, gibi bir oluşturucu XmlSerializer(Type, Type[]) çağırırsanız ve aşağıdaki kodda olduğu gibi seri hale getirmek için bir dizi ek Type nesne sağlarsanız, .NET Native derleyicisi bu türleri çözümleyemez.
XmlSerializer xSerializer = new XmlSerializer(typeof(Teacher),
new Type[] { typeof(Student),
typeof(Course),
typeof(Location) });
Çalışma zamanı yönergeleri dosyasına her tür için aşağıdaki gibi girdiler ekleyin:
<Type Name="t" Browse="Required Public" />
Örnekte kullanılan söz dizimi hakkında bilgi için bkz <. Tür> Öğesi.