У меня есть объекты BaseObject и DerivedObject. Затем я хочу дать BaseObject BaseContainer, и предоставить DerivedObject DerivedContainer.Параллельное наследование
(DerivedObject: BaseObject, DerivedContainer: BaseContainer)
Например, используя ключевое слово new
:
BaseObject:
общественного BaseContainer Контейнер {получить; набор;}
DerivedObject:
public new DerivedContainer Container
{
get { return (DerivedContainer)base.Container; }
set { base.Container = value;
//Some extra things that MUST be called
}
}
virtual
и override
не будет работать, потому что вы не можете изменить тип возврата (get;
терпит неудачу). new
не работает, если я делаю ((BaseObject)myDerivedObject).Container = something
, потому что он не вызывает дополнительный код (часть комментария) в DerivedObject.Container__set
.
Я знаю, что могу сделать свойство get
-одно, использовать new
и добавить метод виртуального сеттера (в любом случае тип возврата недействителен, поэтому я могу переопределить его), но мне было интересно, существует ли какой-либо способ этого.