非公共成员的C#接口

在C#中,当实现一个接口时,默认情况下所有成员都是公共的。你认为如果我们可以指定无障碍修饰符(protected,internal,除了private),或者更好地使用抽象类更好吗?
如果一个接口是内部的,它的所有成员将在程序集的内部。如果嵌套接口是受保护的,只有外部类的子类可以访问该接口。

在其声明组件之外的接口的内部成员将是无意义的,对于在其声明外类之外的接口的受保护成员也是如此。

接口的点是描述实现类型和接口的用户之间的契约。外部呼叫者不会关心和不应该关心实施,这是内部和受保护的成员是为了。

对于由基类调用的受保护成员,抽象类是指定基类和继承它们的类之间的契约的方法。但在这种情况下,实现细节通常非常相关,除非它是一个退化的纯抽象类(所有成员都是抽象的),在这种情况下受保护的成员是无用的。在这种情况下,去使用接口并保存单个基类以实现要选择的类型。

翻译自:https://stackoverflow.com/questions/17576/non-public-members-for-c-sharp-interfaces

转载注明原文:非公共成员的C#接口