gpt4 book ai didi

c# - 如何将接口(interface)实现为 protected 方法?

转载 作者:太空狗 更新时间:2023-10-30 00:41:34 24 4
gpt4 key购买 nike

我偶然发现了 IController 并注意到它有一个方法 Execute。我的问题是,鉴于 Controller 派生自实现接口(interface) IControllerControllerBaseControllerBase 是如何能够将 Execute 实现为 protected virtual?

我的理解是接口(interface)必须作为公共(public)方法来实现。我对此的理解更加复杂,因为您不能在实例化的 Controller 上调用 Execute,而必须将其转换为 IController 的实例.

如何将接口(interface)实现为 protected 方法?

补充一点,我知道显式接口(interface)实现,但是如果你 view the source code对于 ControllerBase,您会看到该方法实现为 protected virtual void Execute(RequestContext requestContext)

最佳答案

它被称为显式接口(interface)实现。

A class that implements an interface can explicitly implement a member of that interface. When a member is explicitly implemented, it cannot be accessed through a class instance, but only through an instance of the interface.

在 MSDN 上阅读更多信息:Explicit Interface Implementation Tutorial .

简单示例:

interface IControl
{
void Paint();
}

public class SampleClass : IControl
{
void IControl.Paint()
{
System.Console.WriteLine("IControl.Paint");
}

protected void Paint()
{
// you can declare that one, because IControl.Paint is already fulfilled.
}
}

和用法:

var instance = new SampleClass();

// can't do that:
// instance.Paint();

// but can do that:
((IControl)instance).Paint();

关于c# - 如何将接口(interface)实现为 protected 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760922/

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