Статические абстрактные свойства C# не могут быть перезаписаны дочерним интерфейсом. ⇐ C#
Статические абстрактные свойства C# не могут быть перезаписаны дочерним интерфейсом.
Я пытаюсь работать со статическими абстрактными свойствами, которые были представлены в .NET 7. вот пример того, чего я пытаюсь достичь:
публичный интерфейс IRegister { общественный статический абстрактный байт RegisterCode {get; } общественный статический абстрактный int BitsSize {get; } } общедоступный интерфейс IRegister8Bit: IRegister { public static new int BitsSize => 8; } публичный класс T: IRegister { общедоступный статический байт RegisterCode => 0x01; общественный статический int BitsSize => 16; } общедоступный класс T2: IRegister8Bit { общедоступный статический байт RegisterCode => 0x07; } Программа общественного класса { public static void Test() где Register: IRegister { Console.WriteLine(Register.RegisterCode); Console.WriteLine(Register.BitsSize); } общественная статическая пустота Main() { Тест(); Тест(); } } Но я получаю следующую ошибку компиляции:
Ошибка компиляции (строка 20, столбец 19): «T2» не реализует интерфейс. член 'IRegister.BitsSize'
почему T2 все еще просит меня явно реализовать BitsSize, хотя он реализован в родительском интерфейсе IRegister8Bit?
Я пытаюсь работать со статическими абстрактными свойствами, которые были представлены в .NET 7. вот пример того, чего я пытаюсь достичь:
публичный интерфейс IRegister { общественный статический абстрактный байт RegisterCode {get; } общественный статический абстрактный int BitsSize {get; } } общедоступный интерфейс IRegister8Bit: IRegister { public static new int BitsSize => 8; } публичный класс T: IRegister { общедоступный статический байт RegisterCode => 0x01; общественный статический int BitsSize => 16; } общедоступный класс T2: IRegister8Bit { общедоступный статический байт RegisterCode => 0x07; } Программа общественного класса { public static void Test() где Register: IRegister { Console.WriteLine(Register.RegisterCode); Console.WriteLine(Register.BitsSize); } общественная статическая пустота Main() { Тест(); Тест(); } } Но я получаю следующую ошибку компиляции:
Ошибка компиляции (строка 20, столбец 19): «T2» не реализует интерфейс. член 'IRegister.BitsSize'
почему T2 все еще просит меня явно реализовать BitsSize, хотя он реализован в родительском интерфейсе IRegister8Bit?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
C# 11. Статические абстрактные члены в интерфейсах через абстрактные классы?
Anonymous » » в форуме C# - 0 Ответы
- 49 Просмотры
-
Последнее сообщение Anonymous
-