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); }