次の(簡潔にするためにトリミングされた)宣言を持つ基本クラスがあります。
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 アクセサーが my (オーバーライド) ステータスはヒットです。
私はすでにSOで同様の質問を見つけました...
プロパティ セットが StackOverflow 例外をスローするのはなぜですか?
...しかし、自動プロパティの実装を見ると、私のコードは正しく、無限ループを作成しないように見えます (しかし、これは事実のようです)。そのプロパティを正しくオーバーライドする方法についてのアイデアはありますか?
ありがとう!