是否可以使用表达式树来定义动态类型的方法体?

sir*_*lot 10 c# reflection expression-trees

如果我正在创建一个动态类型:

TypeBuilder dynaType = dynaModule.DefineType(typeof(T).Name + "_ORMProxy");

dynaType.AddInterfaceImplementation(typeof(IServiceTable));

// (1) Implement: (String) IServiceTable.TableName { get; }
FieldBuilder tableNameField = dynaType.DefineField("tableName", typeof(String), FieldAttributes.Private);
MethodBuilder tableNamePublicGetAccessor = dynaType.DefineMethod("get_tableName", MethodAttributes.Public);
tableNamePublicGetAccessor...
Run Code Online (Sandbox Code Playgroud)

是否可以将GetAccessor方法设置为表达式树.他们比直接IL更容易使用.

Mik*_*bel 4

是和不是。仅当该方法是静态的时,该LambdaExpression.CompileToMethod()方法才允许您将表达式树编译为 a 。它不能用于实现实例方法,我相信这正是您在示例中想要的。MethodBuilder