[DataContract]
public class MyFaultException
{
private string _reason;
[DataMember]
public string Reason
{
get { return _reason; }
set { _reason = value; }
}
}
考虑到 WCF 在 .NET 3.0 中开始并且 C# 3 已经具有自动属性,是否有任何理由支持这种方法?为什么不这样写呢?
[DataContract]
public class MyFaultException
{
[DataMember]
public string Reason { get; set; }
}
最佳答案
为了 Jon 的观点之外的完整性,这里的另一点是在许多(不是所有)场景中,数据契约是从某种模型(dbml、EF、wsdl、proto 等)生成的).因此,显式属性没有真正的额外成本,并且显式属性适用于更多语言版本。
此外,模板代码可能包括部分方法以允许进行前/后操作,以及其他框架代码。为简洁起见,发布的示例中可能省略了模板的那部分内容。
最后,可以根据字段选择性地指定数据契约(Contract),允许只读属性等:
[DataContract]
public class MyFaultException
{
[DataMember(Name="Reason")]
private string _reason;
public string Reason { get { return _reason; } }
}
关于c# - 为什么我在编码网站上看到的大多数 DataContract 的 DataMembers 不是使用自动属性编写的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3450532/