c# - 界面及其可访问性

标签 c# .net design-patterns class-design

我在面试中被问到一个关于接口(interface)的问题。我不确定这是否真的可能。请看下面的问题。

有3个接口(interface)ABCA 继承自接口(interface) BC:

public interface A : B,C
{

} 

我们必须确保该接口(interface)的用户不能直接或独立地使用BC,而只能使用A .

我可以想到以下场景:

  1. 制作BC 内部接口(interface)。但我没有看到任何实际用途,因为我可以直接在 A 本身中定义所有成员。
  2. 使BC 成为私有(private)接口(interface)。但是我怎样才能做到呢?此外,我在下面的 MSDN 链接中看到 BC 必须至少与 A 一样可访问:http://msdn.microsoft.com/en-us/library/aa664578%28v=VS.71%29.aspx .

有什么办法可以做到这一点还是问题本身是错误的?

最佳答案

您所要求的将违反 Liskov Substitution Principle .

如果 A 以这种方式实现了 B,它应该始终可以直接用作 B。试图阻止这种情况将违反面向对象设计的主要原则之一。

我怀疑面试官是想看看你是否理解这个核心概念,并会从一开始就说“这是错误的,因为......”。

关于c# - 界面及其可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840914/

相关文章:

c# - 如何从通用列表中删除基于带有构造函数的类的项目?

c# - MVC3 自定义 View 引擎

.net - 非捕获组不在正则表达式中工作

c# - 为什么感叹号出现在文字前面

c# - 当子控件具有焦点时在窗体上捕获 KeyUp 事件

java - 文字是否应该被通用接口(interface)替换

http - RESTful 数据结构模式

c# - MethodBase 作为哈希表键

c# - 在观察者设计模式单元测试中我们需要测试什么?

c# - 如何使用 openpop.net 下载多个附件