public delegate void SimpleDelegate();
public void mycode()
{
string str = "myfunction";
/*somehow use reflection to turn str into myfunction so this will compile*/
SimpleDelegate simpleDelegate = new SimpleDelegate(str);
}
public void myfunction() { }
答案 0 :(得分:3)
找到方法信息
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.aspx
将其转换为委托
http://msdn.microsoft.com/en-us/library/53cz7sc6.aspx
编辑 - 这是一个小的Linqpad片段,我在String中设置了一个扩展方法来创建委托。没有错误检查!
void Main()
{
var simpleDelegate = "test".CreateDelegate<Func<string>>(new Test());
simpleDelegate().Dump();
}
class Test
{
public string test() { return "hi"; }
}
public static class ExtensionMethods
{
public static T CreateDelegate<T>(this string methodName,object instance) where T : class
{
return Delegate.CreateDelegate(typeof(T), instance, methodName) as T;
}
}
答案 1 :(得分:3)
使用反射来获取方法:
GetType().GetMethod(str).Invoke(this, new object[0])
答案 2 :(得分:1)
答案 3 :(得分:0)