DataContractJsonSerializer kullanıyorum ve DataMember Name ile ilgili bir sorun yaşıyorum.Serialization DataMember (name) geçersiz kılma sorunu
Temel sınıf ve çeşitli türetilmiş sınıflar yaptım. Türetilmiş sınıflara ihtiyacım var çünkü farklı json dizeleri var. Json dizilerini serileştirmek istiyorum ve bu yüzden veri elemanları için farklı isimlere ihtiyaç duyuyorum. Aşağıdaki örnekte olduğu gibi DataMember adını değiştirmeye çalıştığınızda:
AnaSınıf:
[DataContract]
public abstract class BaseClass
{
[DataMember]
public virtual string FirstMethod { get; protected set; }
}
Türetilmiş sınıfı:
[DataContract]
[KnownType(typeof(BaseAccess))]
public class DerivedClass
{
[DataMember(Name="first_method")]
public virtual string FirstMethod { get; protected set; }
}
Sorun türetilmiş bir sınıf kullandığınızda seri görmezden görünüyor olmasıdır Verilen DataMember adı. Dolayısıyla, türetilmiş türetme ile serileştirdiğimde, serileştirme "türetilmiş sınıfın" yerine "ilk_method" yerine "İlkMethod" (temel sınıfın) adıyla yer alır gibi görünmektedir. Türetilmiş sınıfın DataMember isminin kullanılması mümkündür (durumumdaki türetilmiş sınıflar için farklıdır).
Başka bir soru. Baz sınıfında KnownType eklenen örnekler buldum ve türetilmiş sınıfa ekledim. Benim için mantıksal sınıfta (özellikle mirasla ilgili endişeler için) mantığa benziyor. Ne doğru?
Not Eğer temel sınıfta özelliğinden [DataMember] özelliğini kaldırmak gerekir. –