Реализация метода по умолчанию для интерфейсов С#?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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