Реализация метода по умолчанию для интерфейсов С#?C#

Место общения программистов C#
Anonymous
Реализация метода по умолчанию для интерфейсов С#?

Сообщение Anonymous »

Можно ли определить интерфейс на C#, имеющий реализацию по умолчанию? (чтобы мы могли определить класс, реализующий этот интерфейс, не реализуя этот конкретный метод по умолчанию).

Я знаю методы расширения (как описано, например, в этой ссылке). Но это не мой ответ, потому что, имея расширение метода, подобное следующему, компилятор по-прежнему жалуется на реализацию 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: иметь абстрактный базовый класс с некоторым методом также не для моего ответа просто потому, что в C# нет множественного наследования, и это отличается от реализации интерфейсов по умолчанию (если это возможно!).

Подробнее здесь: https://stackoverflow.com/questions/303 ... interfaces

Вернуться в «C#»