2016-06-05 12 views
0

Ich muss das folgende YAML zu meinem benutzerdefinierten Typ deserialisieren. Das YamlAlias-Attribut scheint veraltet zu sein, also habe ich es durch YamlMember ersetzt. Es schlägt fehl, auf Deserialisieren die folgenden YAML mit der folgenden Ausnahme:Wie kann ich Alias ​​auf YamlMember in YamlDotNet angeben?

host: 
     properties: 
     mem_size: 2048 MB 

YamlDotNet.Core.YamlException: (Linie: 21, Col: 13, Idx: 524) - (Line: 21, Col: 13, Idx: 524): Ausnahme bei der Deserialisierung ----> System.Runtime.Serialization.SerializationException: Die Eigenschaft 'mem_size' wurde beim Typ 'Toscana.Domain.HostProperties' nicht gefunden.

public class Host 
{ 
    public HostProperties Properties { get; set; } 
} 

public class HostProperties 
{ 
    [YamlMember(typeof(DigitalStorage))] 
    public string MemSize { get; set; } 
} 

Antwort

2

Die Alias ist eine Eigenschaft der YamlMemberAttribute Klasse, es ist nicht in den Konstruktor. Nun, ich weiß nicht, wie Sie Ihre DigitalStorage Klasse aussieht und ob ein string erfolgreich in sie deserialisiert werden (ich bezweifle es), aber da Ihre Frage einen Alias ​​hinzuzufügen ist, das ist, wie Sie es tun:

public class HostProperties 
{ 
    [YamlMember(typeof(DigitalStorage), Alias = "mem_size")] 
    public string MemSize { get; set; } 
}