.NET反射的问题

时间:2012-05-09 11:28:13

标签: .net reflection

这里有.NET反射的一些问题......

我有一个在.NET中使用反射的场景:我有一个类,ClassA,它从另一个类ClassA_Base继承一个方法。两者都在同一个组件中。所讨论的方法采用参数,接口,IInterfaceA,它位于另一个组件中。现在当我使用反射加载ClassA并使用带有.dll路径的LoadFrom方法时,当我尝试使用该方法时,我得到一个MissingMethodException,当我在Visual Studio中断行并且查看时,它不显示基类方法。有趣的是,基类还有一些返回IInterfaceA的属性,这些属性出现了!我想知道问题是什么?

ClassA : ClassA_Base
{
}

ClassA_Base
{
   SomeMethod(IInterfaceA obj); //Doesn't show up
   IInterfaceA SomeProperty{ get; } //Shows up
}

这是使用F#实现的,但我相信其行为与任何其他.NET语言实现相同。

提前致谢...

2 个答案:

答案 0 :(得分:0)

而不是默认Type.GetMethod,传递BindingFlags值。像这样:

typeof(ClassA).GetMethod("SomeMethod",
                         BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
                         null,
                         new Type[] { typeof(IInterfaceA) },
                         null);

抱歉,我不知道如何将其翻译为F#。

答案 1 :(得分:0)

使用反射,您只需检索当前类上实现的方法。这意味着对于基类中的东西不会显示。如果你想找到一个方法只需在基类上查找,你就可以在子类上调用它。

界面东西出现的原因是它仍然在具体类上实现。 (而不仅仅是在基础上实施)