Допустим, у вас есть интерфейс IFoo
и некоторый член Member
. Класс, который его реализует, способен реализовать член, поступающий из интерфейса и , одновременно добавляя «новый» член с точно таким же именем.
Это действительно здорово. Теперь я хотел бы получить что-то похожее, но не из интерфейса, а из абстрактного класса. Я ожидаю, что поведение будет аналогично интерфейсу - при наличии экземпляра абстрактного класса будет виден исходный член, а при наличии экземпляра производного класса будет виден «новый» член, а оригинал будет скрыт.
Я имею в виду нечто подобное:
abstract class AFoo
(
public abstract string Member { get; }
}
class Foo : AFoo
{
public override string Member { get; } // this is the one coming from AFoo
public new int Member { get; } // does not work (try 1)
string AFoo.Member { get; } // works only with interfaces (try 2)
}
Есть ли механизм, позволяющий это сделать?
Обновление: в Foo
есть 2 члена Я только что написал две попытки. Использование будет таким же, как с интерфейсом:
var foo = new Foo();
AFoo afoo = foo;
foo.Member; // gets int
afoo.Member; // gets string