无法使用自定义TypeConverter

时间:2018-11-19 01:27:36

标签: c# json.net

我正在尝试为我的自定义Node类实现TypeConverter。 (我对this问题的回答导致了这种方法。)在我的课程NodeConverter : TypeConverter中,我具有以下知识:

public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
    if (sourceType == typeof(string))
    {
        return true;
    }

    return base.CanConvertFrom(context, sourceType);
}

public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
    if (value is string)
    {
        // parse the string, return a new node
    }

    return base.ConvertFrom(context, culture, value);
}

我还添加了[TypeConverter(typeof(NodeConverter))]作为我的Node类的属性。然后在单元测试中,我有以下内容:

var str = "{\"Username\":\"123\",\"Name\":\"Test Name\",\"Degree\":0}";
var deserialized = JsonConvert.DeserializeObject<Node>(str);

运行单元测试时,出现此错误:

  

Newtonsoft.Json.JsonSerializationException:'无法反序列化   当前的JSON对象(例如{“ name”:“ value”})   'd3js.Shared.Graph.Node',因为类型需要JSON字符串值   正确反序列化。

我不清楚“ JSON字符串值”是什么,或者它与我在这里使用的有什么不同,所以我不确定如何继续。

0 个答案:

没有答案