IsAssignableFrom和GetInterface有什么区别?
时间:2020-03-06 14:24:45 来源:igfitidea点击:
在.Net中使用反射,两者之间有什么区别?
if (foo.IsAssignableFrom(typeof(IBar)))
和
if (foo.GetInterface(typeof(IBar).FullName) != null)
哪个更合适,为什么?
一个或者另一个何时会失败?
解决方案
如果我们只想查看某个类型是否实现了给定的接口,那么两种方法都可以,尽管GetInterface()可能更快,因为IsAssignableFrom()比GetInterface()进行的内部检查更多。检查Type.GetInterfaces()的结果可能会更快,该结果将返回相同的内部列表,而其他两个方法都将使用此列表。