public GetGenericArgumentsFor ( |
||
genericMethod | ||
return | System.Type[] |
public static Type GetClosedParameterType(this AbstractTypeEmitter type, Type parameter) { if (parameter.IsGenericTypeDefinition) { return(parameter.GetGenericTypeDefinition().MakeGenericType(type.GetGenericArgumentsFor(parameter))); } if (parameter.IsGenericType) { var arguments = parameter.GetGenericArguments(); if (CloseGenericParametersIfAny(type, arguments)) { return(parameter.GetGenericTypeDefinition().MakeGenericType(arguments)); } } if (parameter.IsGenericParameter) { return(type.GetGenericArgument(parameter.Name)); } if (parameter.IsArray) { var elementType = GetClosedParameterType(type, parameter.GetElementType()); return(elementType.MakeArrayType()); } if (parameter.IsByRef) { var elementType = GetClosedParameterType(type, parameter.GetElementType()); return(elementType.MakeByRefType()); } return(parameter); }
public static Type GetClosedParameterType(AbstractTypeEmitter type, Type parameter) { if (parameter.IsGenericTypeDefinition) { return parameter.GetGenericTypeDefinition().MakeGenericType(type.GetGenericArgumentsFor(parameter)); } if (parameter.IsGenericType) { Type[] arguments = parameter.GetGenericArguments(); if (CloseGenericParametersIfAny(type, arguments)) { return parameter.GetGenericTypeDefinition().MakeGenericType(arguments); } } if (parameter.IsGenericParameter) { return type.GetGenericArgument(parameter.Name); } if (parameter.IsArray) { var elementType = GetClosedParameterType(type, parameter.GetElementType()); return elementType.MakeArrayType(); } if(parameter.IsByRef) { var elementType = GetClosedParameterType(type, parameter.GetElementType()); return elementType.MakeByRefType(); } return parameter; }