我遇到过一个场景,我想使用 .NET 8.0 中的默认接口实现,但我遇到了问题。在下面所示的简单示例中,我的编译器抱怨
Baz
没有实现 IFoo.Foo(string)
,但我认为由于 IBar
确实提供了 Foo
的默认实现,因此从 IBar
继承的任何内容都应该已经实施了Foo
。
来自 Visual Studio 的 C# 代码屏幕截图,显示错误指示器和一个错误文本:
我确实注意到
IBar
的 Foo
实现确实有一个警告波形曲线,表明我可能需要一个新关键字,我尝试了这一点,它解决了那里的警告波形曲线,但是 Baz
类仍然有错误因为它没有实现IFoo.Foo
第一个屏幕截图中未显示的另一个错误指示器:
我在这里遗漏了什么吗?这是一个已知的限制吗?我在实施中发现了错误吗?
你需要做显式的接口实现语法:
interface IBar:IFoo{
void IFoo.Foo(string foo) => Console.WriteLine("foo");
}