【问题标题】:C# Interface Protected Method - How does it work? [duplicate]C# 接口保护方法 - 它是如何工作的? [复制]
【发布时间】:2021-11-07 11:52:36
【问题描述】:

我不明白,接口的受保护方法是如何工作的。 我有受保护方法的接口和类: 平台 - .Net Core 5

public interface ISomeInterface
{
    protected void Method_InterfaceRealization()
    {
        Console.WriteLine("JUST Inside interface realization PROTECTED");
    }

    protected void Method1();
}

public class SomeClass: ISomeInterface
{
    void ISomeInterface.Method1()
    {
        Console.WriteLine("Method_PROTECTED_NoInterfaceRealization");
    }
}
  1. 如何在接口外调用 Method_InterfaceRealization 方法?
  2. 如何在任何地方调用这个 Method1? 非常感谢!

【问题讨论】:

  • @GSerg 从 C#8 开始,接口可以有私有成员和受保护成员。 jeremybytes.blogspot.com/2019/11/…
  • @lidqy 您是否真的阅读了链接到的东西,而不仅仅是建议的副本的标题?因为你试图用我 have mentioned 的相同链接来启发我。
  • @GSerg 是的,我读过。我还阅读了您的评论,您说接口不能有私有和受保护的成员,这是错误的。是你以错误的理由结束了这个问题吗?
  • @GSerg 好吧,不是你,但一些经验不足的用户现在会认为 C# 接口中没有私有/受保护的成员,这是一个不太为人所知的功能,但它可能很有用如果你不能改变你派生的类......但是好的,现在一切都已经说过不止一次了......

标签: c#


【解决方案1】:

从 C# 8.0 开始,允许使用默认接口实现。接口成员上的修饰符也是允许的。受保护的接口成员只能从派生接口调用,不能从派生类调用。

您可以在此处阅读新界面相关功能的原始规范以及一些设计讨论和决策:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods

这里还有两篇相关文章:

https://www.talkingdotnet.com/default-implementations-in-interfaces-in-c-sharp-8/

https://jeremybytes.blogspot.com/2019/11/c-8-interfaces-public-private-and.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 2010-11-17
    • 2011-05-31
    • 1970-01-01
    • 2013-04-07
    • 2013-09-02
    • 1970-01-01
    • 2019-10-02
    相关资源
    最近更新 更多