У меня есть этот базовый класс, имеющий следующий интерфейс:
abstract class Base
{
abstract public object Val
{
get;
}
}
Для любых производных классов значение Val
должно быть указано во время создания объекта.
Вопрос в том, как я могу сделать производным классом, чтобы сделать это (надеюсь, во время компиляции)?
Я попытался добавить конструктор:
abstract class Base
{
public Base(object value)
{
val = value;
}
private object val;
...
}
Но, как вы можете видеть тогдаМне пришлось объявить приватное поле для хранения значения в нем (поскольку Value доступно только для чтения).
Проблема возникает из-за того, что я хочу добавить какой-то эффект к производным классам, используя шаблон Decorator / Wrapper, представленный в шаблонах GoF Design Patterns.,Но так как я объявил поле внутри базового класса, декораторы продолжают сохранять копию тех же данных, и я теряю память.