private static string GetFriendlyGenericInstanceName(this GenericInstanceType self, ILanguage language, string leftBracket, string rightbracket) { V_0 = new StringBuilder(); V_1 = GenericHelper.GetNonGenericName(self.get_Name()); dummyVar0 = V_0.Append(GenericHelper.ReplaceInvalidCharactersName(language, V_1)); if (language != null && String.op_Equality(language.get_Name(), "IL")) { V_2 = self.get_GenericArguments().get_Count(); V_1 = String.Concat(V_1, "`", V_2.ToString()); return(V_1); } dummyVar1 = V_0.Append(leftBracket); V_3 = 0; while (V_3 < self.get_GenericArguments().get_Count()) { if (V_3 > 0) { dummyVar2 = V_0.Append(", "); } dummyVar3 = V_0.Append(self.get_GenericArguments().get_Item(V_3).GetGenericName(language, leftBracket, rightbracket)); V_3 = V_3 + 1; } dummyVar4 = V_0.Append(rightbracket); return(V_0.ToString()); }
private string HandleNestedGenericTypes(TypeReference parameterType) { V_0 = new StringBuilder(); stackVariable2 = parameterType.get_DeclaringType(); V_1 = parameterType as GenericInstanceType; V_2 = new GenericInstanceType(stackVariable2); V_3 = new Collection <TypeReference>(V_1.get_GenericArguments()); V_4 = new Collection <TypeReference>(V_2.get_GenericArguments()); V_5 = stackVariable2.get_GenericParameters().get_Count(); V_6 = 0; while (V_6 < V_5) { V_2.AddGenericArgument(V_1.get_GenericArguments().get_Item(V_6)); V_2.get_GenericArguments().Add(V_1.get_GenericArguments().get_Item(V_6)); V_6 = V_6 + 1; } dummyVar0 = V_0.Append(this.GetParameterTypeRepresentation(V_2)); dummyVar1 = V_0.Append('.'); if (V_1.get_GenericArguments().get_Count() - V_5 <= 0) { V_7 = GenericHelper.GetNonGenericName(parameterType.get_Name()); dummyVar3 = V_0.Append(V_7); } else { dummyVar2 = V_0.Append(this.AppendGenericArguments(V_1, V_5)); } V_1.get_GenericArguments().Clear(); V_1.get_GenericArguments().AddRange(V_3); V_2.get_GenericArguments().Clear(); V_2.get_GenericArguments().AddRange(V_4); return(V_0.ToString()); }
private GenericInstanceType GetFuncGenericInstance(GenericInstanceType type, bool queryable) { if (!queryable) { return(type); } if (type == null || type.get_GenericArguments().get_Count() != 1) { return(null); } return(type.get_GenericArguments().get_Item(0) as GenericInstanceType); }
private TypeReference MakeGenericInstance(TypeReference genericClass, IEnumerable <TypeReference> arguments, Dictionary <TypeReference, TypeReference> genericInstanceTypeMap) { GenericInstanceType genericInstanceType = new GenericInstanceType(genericClass); foreach (TypeReference current in from x in arguments select this.ResolveGenericInstanceType(x, genericInstanceTypeMap)) { genericInstanceType.get_GenericArguments().Add(current); } return(genericInstanceType); }
private string AppendGenericArguments(GenericInstanceType generic, int startingIndex) { V_0 = new StringBuilder(); dummyVar0 = V_0.Append('{'); V_1 = startingIndex; while (V_1 < generic.get_GenericArguments().get_Count()) { if (V_1 > startingIndex) { dummyVar1 = V_0.Append(','); } V_2 = generic.get_PostionToArgument().get_Item(V_1); dummyVar2 = V_0.Append(this.GetParameterTypeRepresentation(V_2)); V_1 = V_1 + 1; } dummyVar3 = V_0.Append('}'); return(V_0.ToString()); }
private void ProcessAnonymousType(TypeDefinition anonymousTypeDefinition, GenericInstanceType anonymousInstanceType, MethodDefinition constructorDefinition, ExpressionCollection constructorArguments) { V_0 = 0; while (V_0 < constructorDefinition.get_Parameters().get_Count()) { V_1 = constructorDefinition.get_Parameters().get_Item(V_0); V_2 = anonymousTypeDefinition.get_GenericParameters().IndexOf(V_1.get_ParameterType() as GenericParameter); stackVariable19 = this.FindPropertyOfType(anonymousTypeDefinition, V_1.get_ParameterType()); V_3 = anonymousInstanceType.get_GenericArguments().get_Item(V_2); if (anonymousInstanceType.get_PostionToArgument().ContainsKey(V_2)) { V_3 = anonymousInstanceType.get_PostionToArgument().get_Item(V_2); } V_4 = new AnonymousPropertyInitializerExpression(stackVariable19, V_3); V_5 = this.GetParameterIndexWithType(constructorDefinition, V_1.get_ParameterType()); V_6 = this.transformer.Visit(constructorArguments.get_Item(V_5).Clone()) as Expression; this.initializerExpressions.get_Expressions().Add(new BinaryExpression(26, V_4, V_6, this.typeSystem, null, false)); V_0 = V_0 + 1; } return; }
private TypeReference MakeGenericInstance(TypeReference genericClass, IEnumerable <TypeReference> arguments, Dictionary <TypeReference, TypeReference> genericInstanceTypeMap) { // ISSUE: object of a compiler-generated type is created // ISSUE: variable of a compiler-generated type AssemblyTypeInfoGenerator.\u003CMakeGenericInstance\u003Ec__AnonStorey68 instanceCAnonStorey68 = new AssemblyTypeInfoGenerator.\u003CMakeGenericInstance\u003Ec__AnonStorey68(); // ISSUE: reference to a compiler-generated field instanceCAnonStorey68.genericInstanceTypeMap = genericInstanceTypeMap; // ISSUE: reference to a compiler-generated field instanceCAnonStorey68.\u003C\u003Ef__this = this; GenericInstanceType genericInstanceType = new GenericInstanceType(genericClass); // ISSUE: reference to a compiler-generated method using (IEnumerator <TypeReference> enumerator = arguments.Select <TypeReference, TypeReference>(new Func <TypeReference, TypeReference>(instanceCAnonStorey68.\u003C\u003Em__DF)).GetEnumerator()) { while (((IEnumerator)enumerator).MoveNext()) { TypeReference current = enumerator.Current; genericInstanceType.get_GenericArguments().Add(current); } } return((TypeReference)genericInstanceType); }
private void AddBaseType(TypeReference typeRef, Dictionary <TypeReference, TypeReference> genericInstanceTypeMap) { TypeReference typeReference = typeRef.Resolve().get_BaseType(); if (typeReference != null) { if (typeRef.get_IsGenericInstance() && typeReference.get_IsGenericInstance()) { GenericInstanceType genericInstanceType = (GenericInstanceType)typeReference; typeReference = this.MakeGenericInstance(genericInstanceType.get_ElementType(), genericInstanceType.get_GenericArguments(), genericInstanceTypeMap); } this.AddType(typeReference, genericInstanceTypeMap); } }
private TypeReference ResolveGenericInstanceType(TypeReference typeToResolve, Dictionary <TypeReference, TypeReference> genericInstanceTypeMap) { ArrayType arrayType = typeToResolve as ArrayType; if (arrayType != null) { typeToResolve = new ArrayType(this.ResolveGenericInstanceType(arrayType.get_ElementType(), genericInstanceTypeMap), arrayType.get_Rank()); } while (genericInstanceTypeMap.ContainsKey(typeToResolve)) { typeToResolve = genericInstanceTypeMap[typeToResolve]; } if (typeToResolve.get_IsGenericInstance()) { GenericInstanceType genericInstanceType = (GenericInstanceType)typeToResolve; typeToResolve = this.MakeGenericInstance(genericInstanceType.get_ElementType(), genericInstanceType.get_GenericArguments(), genericInstanceTypeMap); } return(typeToResolve); }
private void AddBaseType(TypeReference typeRef, Dictionary <TypeReference, TypeReference> genericInstanceTypeMap) { TypeReference typeRef1 = typeRef.Resolve().get_BaseType(); if (typeRef1 == null) { return; } if (typeRef.get_IsGenericInstance() && typeRef1.get_IsGenericInstance()) { GenericInstanceType genericInstanceType = (GenericInstanceType)typeRef1; typeRef1 = this.MakeGenericInstance(((TypeSpecification)genericInstanceType).get_ElementType(), (IEnumerable <TypeReference>)genericInstanceType.get_GenericArguments(), genericInstanceTypeMap); } this.AddType(typeRef1, genericInstanceTypeMap); }