首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在YamlDotNet中指定序列化自定义类型?

如何在YamlDotNet中指定序列化自定义类型?
EN

Stack Overflow用户
提问于 2016-06-05 07:35:20
回答 1查看 1.2K关注 0票数 0

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

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

代码语言:javascript
复制
public class Host
{
    public HostProperties Properties { get; set; }
}

public class HostProperties
{

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

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

代码语言:javascript
复制
host:
    properties:
        mem_size: 4096 MB

这是一个例外:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-14 10:45:23

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

代码语言:javascript
复制
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);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37639539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档