界面的私有成员

如果在我的程序中我有接口,那么它的所有成员都是隐式公开的 。 在实现该接口的类中,我必须公开该成员(属性)。

是否可以将其设为私有

是否可以将接口实现设为私有?

完全私有 – 接口表示一组公共方法和属性 。 没有办法使接口实现私有化。

可以做的是明确实现:

public interface IFoo { void Bar(); } public class FooImpl { void IFoo.Bar() { Console.WriteLine("I am somewhat private.") } private void Bar() { Console.WriteLine("I am private.") } } 

现在调用IFoo.Bar()的唯一方法是通过接口显式

 FooImpl f = new FooImpl(); f.Bar(); // compiler error ((IFoo)f).Bar(); 

简答:没有。

接口的基本思想是它的类和组件之间的契约,这意味着它的成员是供公众使用的。 如果您需要私人成员,这可能意味着您可能需要重新审视您的设计。

接口意味着公开曝光。

你可以做的是切换到带有受保护抽象成员的抽象基类。 在许多方面,这将通过强制实施者在没有公开的情况下获得方法来实现相同目的。

 public abstract class MyBase { protected abstract void DoSomething(); } 

对此的主要认识是,您不会像使用接口那样使用抽象类获得多重inheritance,因此请权衡这种需求对您的重要性。