У меня есть этот базовый класс со следующим интерфейсом:
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. Но поскольку я объявил поле внутри базового класса, декораторы продолжают сохранять копию одних и тех же данных, и в итоге я теряю память.