界面的私有成员
如果在我的程序中我有接口,那么它的所有成员都是隐式公开的 。 在实现该接口的类中,我必须公开该成员(属性)。
是否可以将其设为私有 ?
是否可以将接口实现设为私有?
不完全私有 – 接口表示一组公共方法和属性 。 没有办法使接口实现私有化。
你可以做的是明确实现:
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,因此请权衡这种需求对您的重要性。