有人告诉我,对于包含getter和setter方法的可序列化对象,需要一个空构造函数,如下所示:
通过WCF服务引用作为代理类时,可以在不调用构造函数的情况下构建它:
[DataContract]
public class Item
{
[DataMember]
public string description { get; set; }
public Item() {}
public Item(string description)
{
this.description = description;
}
}
告诉我这样做的原因是,这可用于使用setter构建对象。 然而,我发现如果像这样定义Item:
[DataContract]
public class Item
{
[DataMember]
public string description { get; set; }
public Item(string description)
{
this.description = description;
}
}
通过WCF服务引用作为代理类时,可以在不调用构造函数的情况下构建它:
Item item = new Item {description = "Some description"};
问题:
- 在声明
new Item
后,我正在编写的代码块到底是什么? - [DataContract] 类是否需要一个空白构造函数?如果是这样,这个空白的构造函数是做什么的?
我发现如果这个类不是代理类,我无法在没有构造函数的情况下创建对象。
Item
作为服务操作参数(IService1.Foo(Item item)
)使用,那么当您调用该操作时就会在运行时崩溃,因为序列化程序无法在服务端找到Item
上的无参构造函数。 - CodeCaster