在 Windows 通用应用程序的上下文中,并使用反射,我试图获取Add
方法从一个ColumnDefinitionCollection
(内置型)
所以我用这个:
type.GetRuntimeMethods().First(info => info.Name == "Add");
但它返回空!
它也会发生在Contains
方法。它们都定义在ICollection<T>
(IList<T>
从中派生出来的)。
但是,如果我定义自己的类派生自IList<T>
,它工作完美。
那么,如何获取Add方法的MethodInfo呢?
是ColumnDefinitionCollection
使用一些技巧?也许与 COM 有关的东西?
我真的不知道为什么GetRuntimeMethods
没有返回所有方法。这是预期的行为吗?或者这是一个错误?
无论如何,一种解决方案(或者可能是一种解决方法)是获取该类型实现的接口,然后获取这些接口的方法,如下所示:
var methodsOfImplementedInterfaces =
type
.GetTypeInfo()
.ImplementedInterfaces
.SelectMany(x => x.GetRuntimeMethods())
.ToList();
在您的具体情况下,这会起作用,因为Add
实际上定义在ICollection<T>
这是由ColumnDefinitionCollection
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)