c# - setter 上的“System.StackOverflowException”

标签 c#

我有一些 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/

相关文章:

c# - Nullable Bool 的编译器错误

c# - Awesomium C# WebControl,更改代理设置

c# - 在 .NET Web 应用程序中实现 XML 请求

c# - XElement with LINQ 在特定节点后添加节点

c# - 如何使用 TransactionSearch 检索指定日期范围内的所有 PayPal 交易

c# - MenuItemCollection 与 List<MenuItem>

c# - VS2017 具有新的 getter/setter 语法 : How to write multiple lines in the setter?/

c# - 前端与后端定义

c# - Resharper:有没有办法修改清理代码/更新文件头的行为?

c# - 在 Web API 中传递枚举参数的最佳实践