这里有.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语言实现相同。
提前致谢...
答案 0 :(得分:0)
而不是默认Type.GetMethod
,传递BindingFlags
值。像这样:
typeof(ClassA).GetMethod("SomeMethod",
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
null,
new Type[] { typeof(IInterfaceA) },
null);
抱歉,我不知道如何将其翻译为F#。
答案 1 :(得分:0)
使用反射,您只需检索当前类上实现的方法。这意味着对于基类中的东西不会显示。如果你想找到一个方法只需在基类上查找,你就可以在子类上调用它。
界面东西出现的原因是它仍然在具体类上实现。 (而不仅仅是在基础上实施)