У меня есть базовый класс со следующим (обрезанным для краткости) объявлением:
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 ...
Почему набор свойств генерирует исключение StackOverflow?
... но, следуя реализации авто-свойств, мой код выглядит так, как будто он будет правильным и не создаст бесконечный цикл (но, похоже, это так). Любые идеи о том, как я бы правильно переопределить это свойство?
Спасибо!