Пример #1
0
 protected virtual void AddAdapterMethod(SupertypingAdapter adapter,
                                         MethodInfo method,
                                         MethodInfo adapteeMethod)
 {
     ParameterInfo[] parameters =
         typeManager.GetParameters(method);
     Type[] paramTypes = new Type[parameters.Length];
     for (int i = 0; i < parameters.Length; i++) {
         paramTypes[i] = parameters[i].ParameterType;
     }
     MethodBuilder mb =
         adapter.TypeBuilder.
         DefineMethod(method.DeclaringType.FullName + "." +
                      method.Name,
                      MethodAttributes.Private |
                      MethodAttributes.Virtual |
                      MethodAttributes.HideBySig,
                      method.ReturnType,
                      paramTypes);
     SupertypingAdapterMethod adapterMethod =
         new SupertypingAdapterMethod(mb, adapteeMethod,
                                      parameters.Length);
     adapter.Methods.Add(adapterMethod);
     adapter.TypeBuilder.DefineMethodOverride(mb, method);
 }