none
來捧個場,順便請求個代碼示例,關于Emit, 動態組建一個方法 RRS feed

  • 常规讨论

  • 我需要實現一個類似Enterprise Library中的pia的功能.

    就是在我的業務模塊的方法中注入我自定義的方法體.

    具体是这样,事先我会把所有业务模块实现的接口以及实现该接口的Type注册到一个表里,然后我需要遍历这个表,找出所有的接口,然后动态创建一个Type来实现所有这些接口,而这些接口的方法体具体实现就是我想注入的方法体加上原先注册到表里的业务模块的方法体

    例如业务模块 Foobar实现了IFoobar, IFoobar有一个方法叫string SayHello(), 我想注入的方法叫void Auth();

    那么我用typebuilder创建一个新Type叫DynamicType,实现IFoobar接口,给该接口添加方法DynamicType.SayHello()  <---这一步已经实现

    现在就是这个方法应该怎么build,

    DynamicType.SayHello = void Auth() + string Foobar.SayHello();

    MethodBuilder methodBuilder = typeBuilder.DefineMethod(targetMethod.Name, MethodAttributes.Public | MethodAttributes.Virtual, targetMethod.ReturnType, paramType);

    ILGenerator ilGen = methodBuilder.GetILGenerator();
    //接下来我应该??

     

    2010年11月23日 1:44

全部回复