回答
你不能在C#中做到这一点 - 任何类都可以实现它有权访问的任何接口。
你为什么要这么做?请记住,通过声明的接口继承:
public interface InterfaceA {}
public interface InterfaceB : InterfaceA {}
你指定的任何实施InterfaceB
也必须实现InterfaceA
,所以你会得到实现InterfaceA
反正类。
我可以建议的最好的方法是将它们 - 顶层和下降的接口放在单独的程序集中,声明为基本级接口internal
,以及将这些接口扩展为public
的接口。
使用它是那么如果超级接口不能被实现类访问,可能实际实现顶级接口? – thecoop 2010-02-17 18:52:59
我得到这个:'不一致的可访问性:基本接口'IBaseInterface'比接口'IDescendantOfBaseInterface''更难以访问。 C#4.0。 – 2013-02-07 17:21:01
首先,说“在其他接口中实现”是没有意义的,因为接口不能实现任何东西。
我可以看到两个有缺陷的方法,这样做。
制作实现动画的动画和非动画抽象类。它们下面的具体类仍然可以强制使用new运算符重载你IAnimation方法:
class SomeAnim : Animated { public new void Foo() { } }
使用混入。保持IAnimated和INonAnimated作为接口,但不要在接口中放置任何方法。取而代之的定义扩展方法是这样的:
static class Ext { public static void Foo(this IAnim anim) { if (anim is IAnimated) // do something else if (anim is INonAnimated) // do something else } }
再次,一个黑客攻击的一位。但是你试图做的事情反映了设计缺陷。
- 1. 明确C#接口实现,从其他接口
- 2. C#接口实现
- 3. 接口实现C#
- 4. 实现接口C#
- 5. 在接口中实现接口属性?
- 6. BindingList <T>其中T是实现其他接口的接口
- 7. 在C++中实现接口
- 8. 在C++中实现接口?
- 9. 接口其他接口继承golang
- 10. 实现与接口集合的接口
- 11. 实现接口
- 12. 实现接口
- 13. 实现接口
- 14. 实现接口
- 15. 接口实现
- 16. 在接口内实现接口
- 17. 显式接口实现和多接口
- 18. 接口实现(接口分离原理)
- 19. 实现接口与提供接口
- 20. 无法实现接口,其中包含接口
- 21. C#实现接口“where TEntity:class”
- 22. 实现在C++接口
- 23. C#接口属性实现
- 24. 实现ISupportIncrementalLoading接口 - UWP - C#
- 25. Objective-c接口和实现
- 26. 实现接口到一个类:接口到接口
- 27. 实体框架中的接口(接口中的接口)
- 28. 如何实现一个已经有一些其他接口的接口?
- 29. 如何限制访问由其他公共接口实现的内部接口
- 30. C#接口继承(可以继承多少其他接口)
我已经重读了这个问题,我仍然认为你需要一个例子 – mythz 2010-02-17 18:42:44
再次读这个问题,我想你要求一些构造来防止**直接**实现一个类的接口,而不是阻止其他接口继承它。 – 2010-02-17 18:44:54
示例:我有一个名为IAnimation的接口,我只想通过接口INonAnimated或IAnimated实现此接口。这样,两个子接口都拥有相同的基本规则。 – Kukks 2010-02-17 18:47:28