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.
Varsayılan olarak, DataContractSerializer nesneleri değere göre serileştirir. IsReference özelliğini kullanarak veri sözleşmesi serileştiriciye nesne referanslarını serileştirirken korumasını bildirebilirsiniz.
Oluşturulan XML
Örneğin, aşağıdaki nesneyi göz önünde bulundurun:
[DataContract]
public class X
{
SomeClass someInstance = new SomeClass();
[DataMember]
public SomeClass A = someInstance;
[DataMember]
public SomeClass B = someInstance;
}
public class SomeClass
{
}
PreserveObjectReferences(varsayılan) olarak ayarlandığında false aşağıdaki XML oluşturulur:
<X>
<A>contents of someInstance</A>
<B>contents of someInstance</B>
</X>
PreserveObjectReferences olarak ayarlandığında trueaşağıdaki XML oluşturulur:
<X>
<A id="1">contents of someInstance</A>
<B ref="1"></B>
</X>
Ancak, XsdDataContractExporter özelliği id olarak ayarlandığında bile, şemasında ref, preserveObjectReferences ve true öznitelikleri açıklamaz.
IsReference Kullanımı
Bu işlemi açıklayan şemaya göre geçerli nesne referans bilgilerini oluşturmak için DataContractAttribute özniteliğini bir tür üzerinde uygulayın ve IsReference bayrağını true olarak ayarlayın. Aşağıdaki örnek, önceki örnekteki X sınıfını, IsReference ekleyerek değiştirir.
[DataContract(IsReference=true)]
public class X
{
SomeClass someInstance = new SomeClass();
[DataMember]
public SomeClass A = someInstance;
[DataMember]
public SomeClass B = someInstance;
}
public class SomeClass
{
}
Oluşturulan XML aşağıdaki gibidir:
<X>
<A id="1">
<Value>contents of A</Value>
</A>
<B ref="1"></B>
</X>
IsReference kullanmak, mesajın tam iletiminde uyumluluğu sağlar. Bu olmadan, şemadan bir tür oluşturulduğunda, bu türün XML çıkışı başlangıçta varsayılan şemayla uyumlu olmayabilir. Başka bir deyişle, id ve ref öznitelikleri serileştirilmiş olsa da, özgün şema bu özniteliklerin (veya tüm özniteliklerin) XML'de oluşmasını engelleyebilirdi.
IsReference Bir veri üyesine uygulandığında, üye yuvarlandığında başvurulabilir olarak tanınmaya devam eder.