无法获取 UWP 中的列定义集合的"Add"方法



在Windows通用应用程序的上下文中,并使用反射,我试图从ColumnDefinitionCollection(内置类型)获得Add方法

所以我用这个:

type.GetRuntimeMethods().First(info => info.Name == "Add");

但是它返回null!

这也发生在Contains方法中。它们都在ICollection<T>中定义(IList<T>由此衍生)。

然而,如果我定义自己的类从IList<T>派生,它工作得很好。

那么,我如何为Add方法获得MethodInfo ?ColumnDefinitionCollection使用了一些技巧吗?也许是和COM有关的东西?

我真的不知道为什么GetRuntimeMethods不返回所有的方法。这是预期的行为吗?还是一个bug?

无论如何,一个解决方案(或者可能是一个变通方法)是获取该类型实现的接口,然后像这样获取这些接口的方法:

var methodsOfImplementedInterfaces = 
    type
        .GetTypeInfo()
        .ImplementedInterfaces
        .SelectMany(x => x.GetRuntimeMethods())
        .ToList();

在您的具体情况下,这将工作,因为Add实际上是在ICollection<T>上定义的,ColumnDefinitionCollection实现了

相关内容

  • 没有找到相关文章

最新更新