Вы можете получить доступ к методам реализации по умолчанию, только вызвав ссылку на интерфейс (представьте их как явно реализованные методы).
Например:
// This works
IPerson person = new Person();
person.GetName();
Но:
// Doesn't works
Person person = new Person();
person.GetName();
Если вы хотите вызвать интерфейсный метод по умолчанию из вашего класса, вам нужно привести this
к IPerson
, чтобы сделать это:
private string SomeMethod()
{
IPerson self = this;
return self.GetName();
}
Там нет способ обойти случай, если вы используете интерфейсы. Если вы действительно хотите такого рода поведение, вам нужно использовать абстрактный класс, где GetName
- это виртуальный метод.
abstract class PersonBase
{
public virtual string GetName()
{
return "Jonny";
}
}