假设我有一个接口继承树:
我父>我父>我父>我父
我将如何:
查找实现iparent的类
确定类的最近祖先,该类也是IParent的子级。
例如:
var myClass = FindImplementor<IParent>();
var myInterface = ClosestAncestor<IParent, myclass>();
我不希望创建与上述签名匹配的函数那只是为了澄清。
iParent的子代以及实现类位于动态加载的程序集中。我不确定那会不会有什么不同。
最佳答案
您可以使用as关键字并检查是否为空。
例子:
var someObject = GetMeSomething(); //returns some IParent/IChild/IGrandChild
if ((someObject as IParent) != null)
if ((someObject as IChild) != null)
{
if ((someObject as IGrandChild) != null)
{
//you have an IGrandChild
}
else
{
//you have an IChild
}
}
else
{
//you have an IParent
}
}
//you have something other than your interface hierarchy
实际上,我并不喜欢这个主意,但我想到了这个尝试识别链有很多问题。想到了多个实现链。