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