界面及其可访问性

sve*_*rap 3 .net c# design-patterns class-design

我在接受采访时被问到有关接口的问题.我不确定这是否真的有可能.请看下面的问题.

有3个接口A,BC. A继承自接口BC:

public interface A : B,C
{

} 
Run Code Online (Sandbox Code Playgroud)

我们必须确保该接口的用户无法使用B,并C直接或独立,只有使用A.

我可以想到以下场景:

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

有没有办法做到这一点,或者问题本身是错的?

Ree*_*sey 5

你要求的是违反Liskov替代原则.

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

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