C# 默认接口实现传递性——为什么我会收到此错误?

问题描述 投票:0回答:1

我遇到过一个场景,我想使用 .NET 8.0 中的默认接口实现,但我遇到了问题。在下面所示的简单示例中,我的编译器抱怨

Baz
没有实现
IFoo.Foo(string)
,但我认为由于
IBar
确实提供了
Foo
的默认实现,因此从
IBar
继承的任何内容都应该已经实施了
Foo

来自 Visual Studio 的 C# 代码屏幕截图,显示错误指示器和一个错误文本:

An image of c# code from visual studio showing error indicators and one error text

我确实注意到

IBar
Foo
实现确实有一个警告波形曲线,表明我可能需要一个新关键字,我尝试了这一点,它解决了那里的警告波形曲线,但是
Baz
类仍然有错误因为它没有实现
IFoo.Foo

第一个屏幕截图中未显示的另一个错误指示器:

The other error indicator that is not shown in the first picture

我在这里遗漏了什么吗?这是一个已知的限制吗?我在实施中发现了错误吗?

c# .net-core inheritance default-interface-member
1个回答
0
投票

你需要做显式的接口实现语法:

interface IBar:IFoo{
    void IFoo.Foo(string foo) => Console.WriteLine("foo");
}
© www.soinside.com 2019 - 2024. All rights reserved.