Ich habe eine Klasse, die in JSON serialisiert wurde, und die ich versuche, in ein Objekt zu deserialisieren.
z.B..
public class ContentItemViewModel
{
public string CssClass { get; set; }
public MyCustomClass PropertyB { get; set; }
}
die einfache Eigenschaft (CssClass) wird mit deserialisiert:
var contentItemViewModels = ser.Deserialize<ContentItemViewModel>(contentItems);
Aber PropertyB bekommt einen Fehler...
Wir haben einen JavaScriptConverter hinzugefügt:
ser.RegisterConverters(new List<JavaScriptConverter>{ publishedStatusResolver});
Als wir jedoch "MyCustomClass" als "SupportedType" hinzufügten, wurde die Methode "Deserialize" nie aufgerufen. Wenn wir jedoch ContentItemViewModel als SupportedType haben, dann wird Deserialize aufgerufen.
Wir haben eine aktuelle Lösung, die in etwa so aussieht:
class ContentItemViewModelConverter : JavaScriptConverter
{
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
var cssClass = GetString(dictionary, "cssClass"); //I'm ommitting the GetString method in this example...
var propertyB= GetString(dictionary, "propertyB");
return new ContentItemViewModel{ CssClass = cssClass ,
PropertyB = new MyCustomClass(propertyB)}
}
public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
throw new Exception("Only does the Deserialize");
}
public override IEnumerable<Type> SupportedTypes
{
get
{
return new List<Type>
{
typeof(ContentItemViewModel)
};
}
}
}
Aber wir würden eine einfachere Lösung von nur deserializing MyCustomClass bevorzugen, da es eine Reihe von anderen Feldern, die auf das ViewModel sind, und es scheint eine Verschwendung zu haben, diesen Konverter jedes Mal zu bearbeiten, wenn wir eine Eigenschaft ändern/hinzufügen....
Gibt es eine Möglichkeit, JUST PropertyB vom Typ MyCustomClass zu deserialisieren?
Vielen Dank für Ihre Hilfe!