Skip to content

.NET Core 实战 [No.84] 显式实现接口

🏷️ 《.NET Core 实战》

显示实现接口就是在实现接口的成员前面加上接口的名称。这种方法可以有效解决接口成员冲突问题。

类是可以继承多个接口的,当接口中有方法声明相同时,就需要显示的实现接口。

csharp
void IDownloader.Start()
{
}

调用时也需要转换成对应的接口类型才可以调用,使用实现类直接调用会报错。

示例代码

IDownloader.cs

csharp
interface IDownloader
{
    void Start();
}

IUploader.cs

csharp
interface IUploader
{
    void Start();
}

NetworkManager.cs

csharp
class NetworkManager : IDownloader, IUploader
{
    void IDownloader.Start()
    {
        Console.WriteLine("正在下载...");
    }

    void IUploader.Start()
    {
        Console.WriteLine("正在上传...");
    }
}

使用示例:

csharp
var manager = new NetworkManager();
(manager as IDownloader).Start(); // 正在下载...
(manager as IUploader).Start(); // 正在上传...
//manager.Start(); // 该语句报错:未包含 "Start" 的定义

参考:《.NET Core 实战:手把手教你掌握 380 个精彩案例》 -- 周家安 著