当我尝试序列化此集合时,name属性未被序列化。
public class BCollection<T> : List<T> where T : B_Button
{
public string Name { get; set; }
}
BCollection<BB_Button> bc = new BCollection<B_Button>();
bc.Name = "Name";// Not Serialized!
bc.Add(new BB_Button { ID = "id1", Text = "sometext" });
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(bc);
只有当我创建一个新类(没有List<t>
继承),并定义字符串Name
属性和List<B_Button> bc = new List<B_Button>();
属性时,我才会得到正确的结果。
答案 0 :(得分:7)
在许多序列化程序(实际上是数据绑定)中,对象 实体或(不包括)列表;在列表中具有属性通常不受支持。我会重构封装列表:
public class Foo<T> {
public string Name {get;set;}
private readonly List<T> items = new List<T>();
public List<T> Items { get { return items; } }
}
也;您打算如何用JSON表示? IIRC JSON数组语法不允许额外的属性 。