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);
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
        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);
        }