如何生成特定的c#函数
本文关键字:函数 何生成 | 更新日期: 2023-09-27 17:50:56
我需要动态生成这样的类:
public class SomeProxyClass
{
public Action<some_vars> ActionName;
public rettype InvokeActionName(some_vars)
{
if(this.ActionName != null)
{
return this.ActionName(some_vars);
}
return default(rettype);
}
}
public class SomeClass
{
public static SomeProxyClass parentProxy;
public static rettype ActionName(some_vars)
{
this.parentProxy.InvokeActionName(some_vars);
}
}
我的主要问题是我不知道如何用IL指令生成如此简单的方法,所以我正在寻找您的帮助!提前感谢!
如果你想动态生成类,你可以使用CodeDom或Reflection.Emit。CodeDom动态创建c#代码,然后在Reflection中编译它。emit为代码创建MSIL。如果你想用IL写,你可以像往常一样创建这个类,然后使用ILDASM.exe
将你的类反编译成IL。现在你知道了你的代码应该是什么样子,你可以使用反射动态地生成你的类。发射s
ILGenerator '类。要了解逐步的过程,请参考本文:http://www.codeproject.com/Articles/121568/Dynamic-Type-Using-Reflection-Emit
希望对你有帮助。
注意:Action
不返回值。因此,如果您期望返回一个值,return this.ActionName(some_vars)
将是无效的。
这是我的想法,希望能有所帮助:)
public class SomeProxyClass<I,O>
{
public Func<I, Nullable<O>> ActionName;
public Nullable<O> InvokeActionName(I value)
{
if(this.ActionName != null)
{
return this.ActionName(value);
}
return null;
}
}
public class SomeClass
{
public static SomeProxyClass<string, int> parentProxy = new SomeProxyClass<string, int>();
public static int? ActionName(string value)
{
this.parentProxy.InvokeActionName(value);
}
}