我必须调用名称来自配置文件的方法。我可以使用Reflection.MethodInfo.Invoke()方法实现此目的。但我的场景是所有这些方法应该是相同的签名。我可以使用代表实现它吗?但我怎么能添加一个方法名称存储在配置文件中的代表?如何将方法名称从配置文件添加到委托?
1
A
回答
1
在MSDN上查看Delegate.CreateDelegate。一些最好的文档在那里!
1
如果您愿意,您可以创建可重复使用的委托。给我喜欢的类型:
public class MyClass
{
public void DoSomething(string argument1, int argument2)
{
Console.WriteLine(argument1);
Console.WriteLine(argument2);
}
}
我可以这样做:
Action<object, MethodInfo, string, int> action =
(obj, m, arg1, arg2) => m.Invoke(obj, new object[] { arg1, arg2 });
,并调用它为:
var method = typeof(MyClass).GetMethod("DoSomething");
var instance = new MyClass();
action(instance, method, "Hello", 24);
如果你知道你的方法有一个返回类型,你可以这样做与System.Func
代表:
public class MyClass
{
public string DoSomething(string argument1, int argument2)
{
return string.Format("{0} {1}", argument1, argument2);
}
}
Func<object, MethodInfo, string, int, string> func =
(obj, m, arg1, arg2) => (string)m.Invoke(obj, new object[] { arg1, arg2 });
string result = func(instance, method, "Hello", 24);
相关问题
- 1. 无法将iAd委托添加到ViewController
- 2. SKProductsRequest委托方法从未被称为
- 3. xcode4快速将委托协议方法添加到.m
- 4. 将引脚添加到MapView时的委托方法
- 5. 通过委托方法将UIImage添加到NSMutableArray S3
- 6. 向UITableView委托添加新方法
- 7. 从动作委托获取方法名
- 8. xcode快捷键导入h文件并添加委托方法
- 9. 如何在不实例化委托的情况下将方法添加到委托的调用列表中?
- 10. 如何将一个苹果委托添加到水果委托人列表中?
- 11. 将游戏名称添加到文件?
- 12. 如何从UItableView委托调用方法
- 13. 如何将环境配置文件配置添加到SBT
- 14. 如何从用户定义方法返回到委托方法
- 15. 如何将方法名称添加到Python中的日志文件中
- 16. 将UIWebView委托迁移到WKWebView委托方法
- 17. 如何从Cocoa中的子类委托方法调用超类委托方法?
- 18. 将方法添加到Django配置文件
- 19. EWS将电子邮件从委托收件箱移动到委托文件夹
- 20. 将CSS文件命名为委托人
- 21. Visual Studio快捷方式自动添加事件委托方法
- 22. 委托方法
- 23. 委托方法
- 24. Installshield Express将配置名添加到msi文件名
- 25. 将文件夹名称添加到文件名与SQL Server
- 26. Bash脚本:如何将配置文件添加到配置文件中?
- 27. 将配置文件MailSettings添加到PropertyGrid
- 28. 将配置文件添加到Xcode 4.6
- 29. InstallShield - 将配置添加到文件
- 30. 没有重载“方法”匹配委托“委托”
OM G ..... ...... – leppie 2010-07-20 11:04:49
不错!用例子很清楚。 – 2010-07-20 11:29:11