我有这个对象
byte b = -1; // OK
Byte b1 = -1; // OK
byte b2 = 255 // Error: value is not in range of 'byte'
byte b3 = 1 + 1; // OK
byte b4 = b + 1; // Error: not a constant expression
public void test (byte b) {...}
test(byte(12)); // OK: explicit narrowing conversion
test(12); // Error: not an assignment context.
在我的控制器中:
[DataContract]
public class FilterList<T> : List<T>
{
[DataMember]
public int Total { get; set; }
}
我可以在客户端获取MyPOCO列表,但是 l.Total 未序列化。我可以知道我做错了什么吗?
答案 0 :(得分:0)
这是一种解决方法,您可以尝试使用[JsonObject]
属性。但是这些项目不会被序列化,因为JSON容器可以具有属性或项目-但不能同时具有两者。如果两者都需要,则需要添加一个合成列表属性来保存项目。
[JsonObject]还将导致序列化诸如Capacity
之类的基类属性,而您可能不希望这样做。若要取消基类属性,请使用MemberSerialization.OptIn。因此,您的最后一堂课应该看起来像这样:
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class FilterList<T> : List<T>
{
[JsonProperty]
public int Total { get; set; }
[JsonProperty]
List<T> Items
{
get
{
return this.ToList();
}
set
{
if (value != null)
this.AddRange(value);
}
}
}
结果: