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); } } }
internal static void ProcessArray(ArrayType inflatedType, InflatedCollectionCollector generics, GenericContext currentContext) { generics.Arrays.Add(inflatedType); }
public GenericContextAwareDeclarationOnlyVisitor(InflatedCollectionCollector generics, GenericContext genericContext, CollectionMode mode = 0) { this._generics = generics; this._genericContext = genericContext; this._mode = mode; }
public static GenericInstanceType InflateType(GenericContext context, TypeDefinition typeDefinition) => ConstructGenericType(context, typeDefinition, (IEnumerable <TypeReference>)typeDefinition.GenericParameters);
public static GenericInstanceType InflateType(GenericContext context, GenericInstanceType genericInstanceType) => ConstructGenericType(context, genericInstanceType.Resolve(), genericInstanceType.GenericArguments);
public GenericContextAwareVisitor(InflatedCollectionCollector generics, GenericContext genericContext) { this._generics = generics; this._genericContext = genericContext; }