C# JSON otomatik özelliği kaldırması
Bazı JavaScript nesne uygun bir C JSON temsil serisini istiyorum# sınıf. Otomatik özellikler güzel özellikler dikkate alındığında, sadece alanları yapmaktansa bu sınıflar olarak tercih ederim. Ne yazık ki, bu .NET serileştirme Motoru (en azından varsayılan olarak) tamamen kaldırması otomatik özellikleri göz ardı eder ve yalnızca belli ki JavaScript nesne yok olan yedekleme alanı, önemsiyor.
Verilen ki no standard way to name backing fields ve dürüst olmak gerekirse istemiyorum bile rahatsız olan "hadi oluşturmak için bir JavaScript nesne benziyor ne vardı C# destek alanları" yaklaşımı gibi geliyor biraz kirli, tek yolu olabilir seri hale getirmek JavaScript alanlar için C# otomatik özellikleri yapabilsem kuvvet serileştirme motoru nedense görmezden desteğini alan ve Kullan özelliği doğrudan. Ne yazık ki, bu nasıl yapılır ya da eğer bu iş çözemedim. Herhangi bir fikir mutluluk duyacağız.
EDİT: İşte bir örnek:
Javascript:
function Cat()
{
this.Name = "Whiskers";
this.Breed = "Tabby";
}
var cat = new Cat();
Bu seri için "{Name: 'Bıyıklı'}".
C# sınıfı:
[Serializable()]
public class Cat
{
public string Name { get; set; }
public string Breed { get; set; }
}
Ve seri kaldırma kodu, başarısız:
new DataContractJsonSerializer(typeof(Cat)).ReadObject(inputStream);
Ve yedekleme alanı için arıyor çünkü başarısız olan istisnadan açıktır.
EDİT2Burada bu özel durum, eğer bu işe yarayacaksa (iç istisnalar):
Sistem.Çalışma zamanı.Seri hale getirme.SerializationException
"Veri sözleşme türü 'Test.Kedi' olamaz çünkü serisi gerekli veri üyeleri '
<Name>k__BackingField, <Breed>k__BackingField
' değil buldum."
CEVAP
Burada neler oluyor deserializer destek alanlarınız adını tahmin etmeye çalışıyor. Bu gibi açık eşlemeleri (DataMember nitelikleri DataContract/) ekleyerek bu sorunu çözebilirsiniz:
[DataContract]
public class Cat
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Breed { get; set; }
}
Böyle büyük mükafat kod otomatik biçim...
Ne kadar boş ise bir özelliği görmezde...
Bir şekilde otomatik olarak paket inşa...
Nasıl JSON nesneler üzerinde __type öz...
Nasıl bir C verirsiniz# Otomatik Özell...