我正在尝试为我的自定义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字符串值”是什么,或者它与我在这里使用的有什么不同,所以我不确定如何继续。