如何通过类和方法名字符串和调用那个类的方法?
喜欢
void caller(string myclass, string mymethod){
// call myclass.mymethod();
}
谢谢
如何通过类和方法名字符串和调用那个类的方法?
喜欢
void caller(string myclass, string mymethod){
// call myclass.mymethod();
}
谢谢
您将要使用反射 。
下面是一个简单的例子:
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");
}
}
现在,这是一个很简单的例子,没有错误检查也忽略一样,如果类型住在另一个组件,但我认为这应该设置你在正确的轨道上做什么更大的问题。
事情是这样的:
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中是一定的你真正需要的方法修改绑定标志。
什么是你的理由这样做呢? 更可能的,你可以做到这一点没有反思,直至并包括动力总成装。