C# 中是否可以使用反射将字符串转换为函数?
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() { }
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() { }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
查找方法信息
http://msdn.microsoft.com/en -us/library/system.reflection.methodinfo.aspx
将其转换为委托
http://msdn.microsoft.com/en-us/library/53cz7sc6.aspx
编辑 - 这是一个小 Linqpad 片段,我在其中设置了 String 的扩展方法来创建委托。没有错误检查!
Find the method info
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.aspx
Convert it to a delegate
http://msdn.microsoft.com/en-us/library/53cz7sc6.aspx
Edit - Here is a small Linqpad snippet where I've setup an extension method off String to create delegates. There is no error checking!
使用反射来获取方法:
Use reflection to get a method:
这将引导您准确了解如何操作: http://www.codeproject.com/KB /cs/C__Reflection_Tutorial.aspx
This walks you through exactly how to do it: http://www.codeproject.com/KB/cs/C__Reflection_Tutorial.aspx
您可以使用
Reflection.Emit
创建代码,但这不需要字符串。另一种选择是 CodeDOM ,它可以接受字符串。Soultion
您可以使用编译器来构建程序集并加载。请查看此处。
You can use
Reflection.Emit
to create code but this would not take a string. Another alternative is CodeDOM which can take string.Soultion
You can use Compiler to build an assembly and load. Look here.