我正在尝试将 .NET 类序列化为 JSON,其中包含一个属性,该属性是泛型类型的通用列表。
我的泛型类型定义如下:
public interface IFoo {}
public class Foo<T>: IFoo
{
public string Name {get; set;}
public string ValueType {get; set;}
public T Value {get; set:}
public Foo(string name, T value)
{
Name = name;
Value = value;
ValueType = typeof(T).ToString();
}
}
然后,如下:
public class Fum
{
public string FumName {get; set;}
public list<IFoo> Foos {get; set;}
}
我创建实例如下:
myFum = new Fum();
myFum.FumName = "myFum";
myFum.Foos.Add(new Foo<int>("intFoo", 2);
myFum.Foos.Add(new Foo<bool>("boolFoo", true);
myFum.Foos.Add(new Foo<string>("stringFoo", "I'm a string");
然后...
我正在尝试使用 NewtonSoft JSON 库进行序列化,如下所示:
string strJson = JsonConvert.SerializeObject(data,
Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Include,
TypeNameHandling = TypeNameHandling.All,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
});
在生成的 JSON 字符串中,每个 Foo 实例的 Name 和 ValueType 属性都已正确序列化 - 但是,输出中始终省略 Value:
{
"FumName": "myFum",
"Foos" : [
{
"Name": "intFoo",
"ValueType": "System.Int32"
},
{
"Name": "boolFoo",
"ValueType": "System.Boolean"
},
{
"Name": "stringFoo",
"ValueType": "System.String"
}
]
}
任何人都可以提出一种方法,使我能够正确序列化泛型类型实例列表以便包含 Value 属性吗?