如何动态调用.NET中类的方法?(How to dynamically call a class&#

2019-06-25 18:22发布

如何通过类和方法名字符串和调用那个类的方法?

喜欢

void caller(string myclass, string mymethod){
    // call myclass.mymethod();
}

谢谢

Answer 1:

您将要使用反射 。

下面是一个简单的例子:

using System;
using System.Reflection;

class Program
{
    static void Main()
    {
        caller("Foo", "Bar");
    }

    static void caller(String myclass, String mymethod)
    {
        // Get a type from the string 
        Type type = Type.GetType(myclass);
        // Create an instance of that type
        Object obj = Activator.CreateInstance(type);
        // Retrieve the method you are looking for
        MethodInfo methodInfo = type.GetMethod(mymethod);
        // Invoke the method on the instance we created above
        methodInfo.Invoke(obj, null);
    }
}

class Foo
{
    public void Bar()
    {
        Console.WriteLine("Bar");
    }
}

现在,这是一个简单的例子,没有错误检查也忽略一样,如果类型住在另一个组件,但我认为这应该设置你在正确的轨道上做什么更大的问题。



Answer 2:

事情是这样的:

public object InvokeByName(string typeName, string methodName)
{
    Type callType = Type.GetType(typeName);

    return callType.InvokeMember(methodName, 
                    BindingFlags.InvokeMethod | BindingFlags.Public, 
                    null, null, null);
}

你应该根据你想打电话,以及检查Type.InvokeMember方法在MSDN中是一定的你真正需要的方法修改绑定标志。



Answer 3:

什么是你的理由这样做呢? 更可能的,你可以做到这一点没有反思,直至并包括动力总成装。



文章来源: How to dynamically call a class' method in .NET?
标签: c# reflection