【发布时间】:2010-12-15 22:41:11
【问题描述】:
假设我有一个接口继承树:
IParent > IChild > IGrandChild
我会怎么做:
- 找到一个实现IParent的类
- 确定类的最接近的祖先也是 IParent 的子代。
例如:
var myClass = FindImplementor<IParent>();
var myInterface = ClosestAncestor<IParent, myclass>();
我不希望创建与上述签名匹配的函数。这只是为了澄清。
IParent 的后代以及实现类都在动态加载的程序集中。我不确定这是否会有所作为。
【问题讨论】:
-
C# 支持接口的多重继承。假设有两个从 IParent 继承的接口:ICild1 和 IChild2。如果一个类同时实现了 IChild1 和 IChild2 会发生什么?
-
旧的多重继承菱形。在我的场景中,我没有使用该功能。我所有实现多个接口的类都实现了没有共同祖先的接口。
-
即使没有“钻石”,您仍然需要遍历整个接口继承树才能找到 IParent。想到递归函数来遍历一棵树以找到一些东西。
标签: c# algorithm reflection inheritance interface