gpt4 book ai didi

c# - 如何在 C# 中的基类上调用显式接口(interface)方法?

转载 作者:行者123 更新时间:2023-11-30 17:33:23 24 4
gpt4 key购买 nike

C# 具有一个有用的显式接口(interface)功能,可让您创建实现接口(interface)的方法,同时避免潜在的名称冲突。

public abstract class BaseClass : IDisposable {
public int Value;
void IDisposable.Dispose() => Value = 1;
}

您甚至可以在子类中覆盖这些方法,只要子类还明确列出它实现了该接口(interface)即可。

public class SubClass : BaseClass, IDisposable {
void IDisposable.Dispose() => Value = 2;
}

static void Main() {
BaseClass obj = new SubClass();
((IDisposable)obj).Dispose();
Console.WriteLine(obj.Value); // 2
}

在子类中,您通常可以调用base.Whatever 来访问方法的基类版本。但是对于显式接口(interface)实现,此语法无效。此外,无法将您的基类转换为接口(interface)以调用该方法。

如何访问基类的显式接口(interface)实现中的逻辑?

最佳答案

我希望这对您有用:

 public abstract class BaseClass : IDisposable
{
public int Value;
void IDisposable.Dispose() => DoSomething();
public void DoSomething() => Value = 1;
}

public class SubClass : BaseClass, IDisposable
{
void IDisposable.Dispose()
{
if (Condition())
DoSomething();
else
DoSomethingElse();
}

void DoSomethingElse() => Value = 2;

private bool Condition()
{
return true;
}


}

关于c# - 如何在 C# 中的基类上调用显式接口(interface)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44183055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com