Mono.Cecil.GenericParameterResolver.ResolveIfNeeded C# (CSharp) Method

ResolveIfNeeded() private static method

private static ResolveIfNeeded ( IGenericInstance genericInstanceMethod, IGenericInstance genericInstanceType, Mono.Cecil.GenericInstanceType genericInstanceType1 ) : Mono.Cecil.GenericInstanceType
genericInstanceMethod IGenericInstance
genericInstanceType IGenericInstance
genericInstanceType1 Mono.Cecil.GenericInstanceType
return Mono.Cecil.GenericInstanceType
        private static GenericInstanceType ResolveIfNeeded(IGenericInstance genericInstanceMethod, IGenericInstance genericInstanceType, GenericInstanceType genericInstanceType1)
        {
            if (!ContainsGenericParameters (genericInstanceType1))
                return genericInstanceType1;

            var newGenericInstance = new GenericInstanceType (genericInstanceType1.ElementType);

            foreach (var genericArgument in genericInstanceType1.GenericArguments) {
                if (!genericArgument.IsGenericParameter) {
                    newGenericInstance.GenericArguments.Add (ResolveIfNeeded (genericInstanceMethod, genericInstanceType, genericArgument));
                    continue;
                }

                var genParam = (GenericParameter)genericArgument;

                switch (genParam.Type) {
                    case GenericParameterType.Type: {
                            if (genericInstanceType == null)
                                throw new NotSupportedException ();

                            newGenericInstance.GenericArguments.Add (genericInstanceType.GenericArguments[genParam.Position]);
                        }
                        break;

                    case GenericParameterType.Method: {
                            if (genericInstanceMethod == null)
                                newGenericInstance.GenericArguments.Add (genParam);
                            else
                                newGenericInstance.GenericArguments.Add (genericInstanceMethod.GenericArguments[genParam.Position]);
                        }
                        break;
                }
            }

            return newGenericInstance;
        }

Same methods

GenericParameterResolver::ResolveIfNeeded ( IGenericInstance genericInstanceMethod, IGenericInstance genericInstanceType, Mono.Cecil.ArrayType arrayType ) : Mono.Cecil.ArrayType
GenericParameterResolver::ResolveIfNeeded ( IGenericInstance genericInstanceMethod, IGenericInstance genericInstanceType, Mono.Cecil.ByReferenceType byReferenceType ) : Mono.Cecil.ByReferenceType
GenericParameterResolver::ResolveIfNeeded ( IGenericInstance genericInstanceMethod, IGenericInstance genericInstanceType, Mono.Cecil.GenericParameter genericParameterElement ) : TypeReference
GenericParameterResolver::ResolveIfNeeded ( IGenericInstance genericInstanceMethod, IGenericInstance declaringGenericInstanceType, TypeReference parameterType ) : TypeReference