コード例 #1
0
        internal static void ProcessGenericType(GenericInstanceType type, InflatedCollectionCollector generics, GenericInstanceMethod contextMethod, CollectionMode mode)
        {
            bool flag = generics.TypeDeclarations.Add(type);

            if (((mode != CollectionMode.Types) || flag) && ((mode != CollectionMode.MethodsAndTypes) || generics.TypeMethodDeclarations.Add(type)))
            {
                GenericContext genericContext = new GenericContext(type, contextMethod);
                type.ElementType.Resolve().Accept(new GenericContextAwareDeclarationOnlyVisitor(generics, genericContext, CollectionMode.Types));
                foreach (GenericInstanceType type2 in type.GenericArguments.OfType <GenericInstanceType>())
                {
                    ProcessGenericType(Inflater.InflateType(genericContext, type2), generics, null, mode);
                }
            }
        }
コード例 #2
0
 internal static void ProcessArray(ArrayType inflatedType, InflatedCollectionCollector generics, GenericContext currentContext)
 {
     generics.Arrays.Add(inflatedType);
 }
コード例 #3
0
 public GenericContextAwareDeclarationOnlyVisitor(InflatedCollectionCollector generics, GenericContext genericContext, CollectionMode mode = 0)
 {
     this._generics       = generics;
     this._genericContext = genericContext;
     this._mode           = mode;
 }
コード例 #4
0
 public static GenericInstanceType InflateType(GenericContext context, TypeDefinition typeDefinition) =>
 ConstructGenericType(context, typeDefinition, (IEnumerable <TypeReference>)typeDefinition.GenericParameters);
コード例 #5
0
 public static GenericInstanceType InflateType(GenericContext context, GenericInstanceType genericInstanceType) =>
 ConstructGenericType(context, genericInstanceType.Resolve(), genericInstanceType.GenericArguments);
コード例 #6
0
 public GenericContextAwareVisitor(InflatedCollectionCollector generics, GenericContext genericContext)
 {
     this._generics = generics;
     this._genericContext = genericContext;
 }