Статические абстрактные члены в интерфейсах через абстрактные классы?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Статические абстрактные члены в интерфейсах через абстрактные классы?

Сообщение Anonymous »

В C# 11 в интерфейсах появились статические абстрактные члены.
Но судя по моим экспериментам, он заставляет только прямого дочернего элемента реализовывать эти статические абстрактные< /код> члены. Этот статический модификатор абстрактного нельзя использовать в абстрактном классе.
Пример того, что я пытаюсь сделать, который не компилируется:
public interface IMyInterface
{
public static abstract void DoSomething();
}

public abstract class MyAbstractClass : IMyInterface
{
public static abstract void DoSomething(); //Error: Overridable method cannot be static
}

public class MyClass : MyAbstractClass
{
public static override void DoSomething() => Console.Log("Hello, World!");
}

Но без абстрактного класса между ними MyClass компилируется нормально:
public class MyClass : IMyInterface
{
public static void DoSomething() => Console.Log("Hello, World!");
}

Я что-то пропустил? И почему это так?

Я думаю, что уже знаю обходной путь моего случая, но этот способ не задействует каждый дочерний элемент MyAbstractClass для реализации IMyInterface, точно так же, как мы делали бы это с обычными членами интерфейса.
public interface IMyInterface
{
public static abstract void DoSomething();
}

public abstract class MyAbstractClass
{

}

public class MyClass : MyAbstractClass, IMyInterface
{
public static void DoSomething() => Console.Log("Hello, World!");
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... ct-classes
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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