internal VirtualMethodInfo(string name,
Type declaringType,
Type reflectedType,
MethodAttributes attributes,
ParameterInfo[] parameters = null,
MethodInfo baseDefinition = null,
Delegate del = null)
{
if (name == null)
throw new ArgumentNullException(nameof(name));
if (declaringType == null)
throw new ArgumentNullException(nameof(declaringType));
if (reflectedType == null)
throw new ArgumentNullException(nameof(reflectedType));
this.parameters = parameters ?? new ParameterInfo[] { };
Name = name;
DeclaringType = declaringType;
ReflectedType = reflectedType;
Attributes = attributes;
this.baseDefinition = baseDefinition;
this.del = del;
MetadataToken = VirtualMemberMetadataTokenAllocator.AllocateToken();
MethodHandle = new RuntimeMethodHandle();
}