如何生成特定的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指令生成如此简单的方法,所以我正在寻找您的帮助!提前感谢!

如何生成特定的c#函数

如果你想动态生成类,你可以使用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);
    }
}