2017-01-10 2 views
2

Ich portiere meine Konfigurationsdatei von .json in das .yaml-Format. In Newtonsoft.Json konnte ich Attribut auf eine Eigenschaft anzuwenden, die benutzerdefinierten Konverter benötigt, zum BeispielSo wenden Sie einen benutzerdefinierten Konverter auf Eigenschaften in YamlDotNet an

[JsonConverter(typeof(CustomIdConverter))] 
public IList<CustomID> Users { get; set; } 

Wie würde ich das gleiche mit YamlDotNet tun?

Ich weiß, Konverter sollten IYamlTypeConverter Schnittstelle implementieren, aber wie würde ich diesen Konverter auf genaue Eigenschaft anwenden?

Antwort

2

Es gibt keine Unterstützung dafür, obwohl das eine nützliche Funktion wäre. Was unterstützt wird, ist, einen Konverter einem Typ zuzuordnen. Als Abhilfe können Sie einen benutzerdefinierten Typ für Ihr Objekt erstellen und den Konverter es assoziieren:

public interface ICustomIDList : IList<CustomID> {} 

public class CustomIDListConverter : IYamlTypeConverter { /* ... */ } 

var deserializer = new DeserializerBuilder() 
    .WithTypeConverter(new CustomIDListConverter()) 
    .Build(); 
+0

Ich habe ein Problem, über das eröffnet - https://github.com/aaubry/YamlDotNet/issues/233 –

+0

Diese Problemumgehung funktioniert definitiv, aber ich würde gerne sehen, dass das mit Eigenschaftenattribut implementiert ist. Es fügt eine sehr genaue Kontrolle über die Serialisierung hinzu und wird sicherlich viele beliebte Anwendungsfälle (einschließlich meiner) lösen. – stil

Verwandte Themen