Может кто-нибудь сказать мне, как сериализовать это
Prop1: !MyTag my_value
Я могу десериализовать в простой тип, такой как
class MyTag
{
public string TagValue { get; set; }
}
, но когда я сериализируюсь снова, я получаю
Prop1: !MyTag
TagValue: my_value
Полный образец
void Main()
{
using (var sr = new StreamReader(File.OpenRead(@"C:\Temp\mytag.yaml")))
{
var deserializer = new DeserializerBuilder()
.WithTypeConverter(new MyTagConverter())
.WithTagMapping("!MyTag", typeof(MyTag))
.Build();
var yamlObject = deserializer.Deserialize(sr);
yamlObject.Dump();
var serializer = new SerializerBuilder().WithTagMapping("!MyTag", typeof(MyTag)).Build();
var yaml = serializer.Serialize(yamlObject);
Console.WriteLine(yaml);
}
}
class MyTag
{
public string TagValue { get; set; }
}
public class MyTagConverter: IYamlTypeConverter
{
public bool Accepts(Type type)
{
return typeof(MyTag).IsAssignableFrom(type);
}
public object ReadYaml(IParser parser, Type type)
{
var target = parser.Consume<Scalar>();
return new MyTag { TagValue = target.Value };
}
public void WriteYaml(IEmitter emitter, object value, Type type)
{
// Can't get anything sensible to be emitted here!
}
}