Можно ли определить интерфейс на С#, который имеет реализацию по умолчанию? (так что мы можем определить класс, реализующий этот интерфейс без реализации этого конкретного метода по умолчанию).
Я знаю методы расширения (как описано в этой ссылке). Но это не мой ответ, потому что, имея расширение метода, подобное следующему, компилятор все еще жалуется на реализацию MyMethod в MyClass:
public interface IMyInterface
{
string MyMethod();
}
public static class IMyInterfaceExtens
{
public static string MyMethod(this IMyInterface someObj)
{
return "Default method!";
}
}
public class MyClass: IMyInterface
{
// I want to have a default implementation of "MyMethod"
// so that I can skip implementing it here
}
Я спрашиваю об этом, потому что (по крайней мере, насколько я понимаю) это можно сделать на Java (см. здесь).
PS: с абстрактным базовым классом с некоторым методом также является not мой ответ просто потому, что у нас нет множественного наследования в С#, и он отличается от того, по умолчанию для интерфейсов (если возможно!).