我有一个实现IEnumerable的集合类,我无法反序列化相同的序列化版本.我正在使用Json.net v 4.0.2.13623
这是我的集合类的简化版本,它说明了我的问题
public class MyType
{
public int Number { get; private set; }
public MyType(int number)
{
this.Number = number;
}
}
public class MyTypes : IEnumerable<MyType>
{
private readonly Dictionary<int, MyType> c_index;
public MyTypes(IEnumerable<MyType> seed)
{
this.c_index = seed.ToDictionary(item => item.Number);
}
public IEnumerator<MyType> GetEnumerator()
{
return this.c_index.Values.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
public int CustomMethod()
{
return 1; // Just for illustration
}
}
Run Code Online (Sandbox Code Playgroud)
当我序列化它时,我得到以下json
[
{
"Number": 1
},
{
"Number": 2 …Run Code Online (Sandbox Code Playgroud) JavaScriptSerializer将从IEnumerable派生的类型序列化为JavaScript数组.它方便了数组和列表,但在某些情况下,我需要序列化在派生类型中声明的属性(例如,键入IGrouping).这里有一些示例代码:
var items = new[] { "aaabbb", "abcd", "bdsasd", "bsdqw" };
IGrouping<char, string> data = items.GroupBy(i => i[0]).First();
var serializer = new JavaScriptSerializer();
var serialized = serializer.Serialize(data);
// serialized == "[\"aaabbb\",\"abcd\"]"
// doesn't contain definition for IGrouping.Key property
Run Code Online (Sandbox Code Playgroud)
这个问题有什么简单的解决方案吗?