在.Net中使用反射,之间有什么区别:

   if (foo.IsAssignableFrom(typeof(IBar)))
   if (foo.GetInterface(typeof(IBar).FullName) != null)
哪个更合适,为什么?
一个或另一个何时会失败?

最佳答案

如果您只想查看某个类型是否实现了给定的接口(interface),则两者都可以,尽管GetInterface()可能更快,因为IsAssignableFrom()比GetInterface()进行的内部检查更多。检查Type.GetInterfaces()的结果可能会更快,该结果将返回相同的内部列表,而其他两个方法都将使用此列表。

09-06 04:18