我有一些 dto 对象,我想使用 wcf 通过网络发送。在这个简单的例子中,它有 FirstName、LastName 和 Name。名称返回名字和姓氏的结合。
通常我不会对 Name 属性使用 settter,但我必须这样做,否则它无法序列化,所以我尝试使用 internal 但我在 Name setter 上遇到错误
An unhandled exception of type 'System.StackOverflowException' occurred in LibSys.WebServices.dll
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string Name {
get { return string.Format("{0} {1}", FirstName, LastName); }
internal set { Name = value; }
}
最佳答案
你的 setter 递归地调用自己。如果 Name
的值是根据其他属性计算得出的,您可能应该完全省略 setter。由于它完全是根据其他属性计算得出的,因此您可能也不需要对其进行序列化。
如果必须要有一个 setter,您可以像这样创建一个空的 setter:
public string Name {
get { return string.Format("{0} {1}", FirstName, LastName); }
internal set { }
}
关于c# - setter 上的“System.StackOverflowException”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368916/