0

这是我的简单类,其中 DigitalStorage 是二进制可序列化类。它的源代码可以在这里找到:

https://github.com/QualiSystems/Toscana/blob/master/Toscana/Domain/DigitalStorage.cs

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

public class HostProperties
{

    [YamlAlias("mem_size")]
    public DigitalStorage MemSize { get; set; }
}

当我尝试反序列化以下 YAML 时,它失败了:

host:
    properties:
        mem_size: 4096 MB

这是一个例外:

YamlDotNet.Core.YamlException : (Line: 16, Col: 22, Idx: 396) - (Line: 16, Col: 29, Idx: 403): Exception during deserialization
----> System.InvalidCastException : Invalid cast from 'System.String' to 'Toscana.Domain.DigitalStorage'.
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(EventReader reader, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer) in C:\projects\yamldotnet\YamlDotNet\Serialization\ValueDeserializers\NodeValueDeserializer.cs:line 75
4

1 回答 1

1

如果您只是将一个添加implicit operator到您的DigitalStorage类中,它将从一个string很好的转换:

public class DigitalStorage
{
    public DigitalStorage(string value)
    {
        // TODO: Do whatever you need to convert the string value.
    }

    public static implicit operator DigitalStorage(string value)
    {
        return new DigitalStorage(value);
    }
}
于 2016-06-14T10:45:23.380 回答