gpt4 book ai didi

c# - 在反射中调用非静态方法

转载 作者:行者123 更新时间:2023-11-30 18:57:18 34 4
gpt4 key购买 nike

我似乎无法弄清楚如何从反射中调用非静态方法(实例方法)。我究竟做错了什么?真正新的/无知的反射(reflection)(如果你没有注意到):

示例:

class Program
{
static void Main()
{
Type t = Type.GetType("Reflection.Order" + "1");
var instance = Activator.CreateInstance(t);
object[] paramsArray = new object[] { "Hello" };
MethodInfo method = t.GetMethod("Handle", BindingFlags.InvokeMethod | BindingFlags.Public);

method.Invoke(instance, paramsArray);

Console.Read();
}
}



public class Order1
{
public void Handle()
{
Console.WriteLine("Order 1 ");
}
}

最佳答案

你有两个问题:

  1. 您的 BindingFlags 不正确。应该是:

    MethodInfo method = t.GetMethod("Handle", BindingFlags.Instance | BindingFlags.Public);

    或者您可以一起删除绑定(bind)标志并使用默认绑定(bind)行为,这在这种情况下会起作用。

  2. 声明的 Handle 方法采用零个参数,但您使用一个参数 ("Hello") 调用它。要么在 Handle 中添加一个字符串参数:

    public void Handle(string something)
    {
    Console.WriteLine("Order 1 ");
    }

    或者不传入任何参数。

关于c# - 在反射中调用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479469/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com