我正在尝试实现一种服务定位器模式,希望能捕获试图将实现注册到其不属于的接口的情况,示例如下:
public void Add(Type interfaceType, object implementingObject)
{
// ... check for nulls
// NO GOOD
if(!implementingObject.GetType().IsAssignableFrom(interfaceType)...
// NO GOOD
if(!implementingObject.GetType().IsInstanceOf(interfaceType)...
// FINALLY!
if(!implementingObject.GetType().BaseType.IsAssignableFrom(interfaceType)...
// ... ok, add it
}
现在我终于通过查看NUnit的isInstanceOf断言内部实现,弄清楚了如何使用BaseType.IsInstanceOf,但它仍然似乎不太直观。
有人能解释这为什么有意义吗?是否有更简单的方法来做到这一点?