【发布时间】:2020-05-15 12:25:22
【问题描述】:
我正在使用反射来调用接口方法,并且出现此错误消息“对象引用未设置为对象的实例。”我也尝试使用 ConstructorInfo 并且也有错误。请帮忙。
public class ClassA
{
private void MethodA(int num, ClassC result)
{
}
}
public interface InterfaceB
{
ClassC MethodB(int num);
}
internal class ClassB
{
public ClassC MethodB(int num)
{
}
}
Type typClassA = Type.GetType("ClassA");
Type typInterfaceB = Type.GetType("InterfaceB");
MethodInfo methodB = typInterfaceB.GetMethod("MethodB", BindingFlags.Public | BindingFlags.Instance); // Error lies here
ClassC result = (ClassC) methodB.Invoke(typInterfaceB, new object[]{num});
MethodInfo methodA = typClassA.GetMethod("MethodA", BindingFlags.NonPublic | BindingFlags.Instance);
methodA.Invoke(typClassA, new object[]{num, result});
ClassB 的实际代码并未声明为“public ClassB : InterfaceB”,而是包含更多类,并且 ClassB 是内部访问。请参阅已编辑的代码。很抱歉多次更改代码,因为我不知道如何简化这种情况。
【问题讨论】:
-
你使用什么编程语言?
-
你为什么要尝试获取
Static方法?你能提供更多的代码吗? -
C#,其实我用的是Instance。抱歉,我没有改回来。
-
完全不清楚。你有实现 InterfaceB.MethodB 的类的实例吗?
-
是否可以发布一些实际编译的代码?我无法理解您在这里的意图,这意味着我无法真正尝试回答这个问题。首先,您可以在类中添加“类”声明,并为所有方法填写返回类型...
标签: c# reflection