我有一个带有以下(为简洁起见)声明的基类:
public abstract class MyBaseClass
{
public int RecordId { get; private set; }
public string ObjectName { get; set; }
public abstract string Status { get; set; }
public GetMyObject(int id)
{
MyObject myObject = context.GetObjectById(id);
this.RecordId = myObject.RecordId;
this.ObjectName = myObject.ObjectName;
this.Status = myObject.Status
}
}
以下类使用它:
public class MySpecificClass : MyBaseClass
{
public override string Status
{
get
{
if(this.Status == "something")
return "some status";
else
return "some other status";
}
set
{
this.Status = value;
}
}
public GetMySpecificObject(int id) : base(id)
{
}
}
现在,当我将我的特定对象绑定到我的模型(我的实现恰好是 MVC)时,如果我只访问 RecordID 和 ObjectName,则返回对象就好了,但是如果我的 get 或 set 访问器(覆盖)状态被击中。
我已经在 SO 上找到了类似的问题...
为什么 Property Set 会抛出 StackOverflow 异常?
...但是通过自动属性实现,我的代码看起来是正确的并且不会创建无限循环(但这似乎是这种情况)。关于如何正确覆盖该属性的任何想法?
谢谢!