如何在运行时创建新方法c#
本文关键字:新方法 创建 运行时 | 更新日期: 2023-09-27 18:01:15
我是在浏览器中接受javascript调用的创建者动态报告系统。
我有以下报告类,
[ComVisible(true)]
public class Report
{
public Report(IEnumerable<Action<object>> actions)
{
foreach (var action in actions)
{
//here i want to create new methods that are public and have method name as the action method name
}
}
}
在主叫类中,我有
public class caller{
private void MyMethod(object obj){ //do something}
report = new report(MyMethod);
}
我需要做的是,在调用构造函数之后,报表类应该生成新的方法(COM可见(,并将其命名为MyMethod,在其中它应该调用原始的MyMethod
public static MyMethod(object obj)
{
// in here it should invoke the actions[0].invoke(obj)
}
我建议您为每个操作及其名称创建一个字典,然后按名称在字典中查找该项。然后采取行动。
Dictionary<string, Action<object>> _methodDictionary = new Dictionary<string, Action<object>>();
public void Report(IEnumerable<Action<object>> actions)
{
foreach (var action in actions)
{
// you need to get your name somehow.
_methodDictionary.Add(action.GetType().FullName, action);
}
}
public void callMethod(string actionName, object itemToPass)
{
if(_methodDictionary.ContainsKey(actionName))
_methodDictionary[actionName].Invoke(itemToPass);
}