Example #1
0
        protected override void Visit(GenericInstanceType genericInstanceType, Unity.Cecil.Visitor.Context context)
        {
            GenericInstanceType inflatedType = Inflater.InflateType(this._genericContext, genericInstanceType);

            this.ProcessGenericType(inflatedType);
            base.Visit(genericInstanceType, context);
        }
Example #2
0
 protected override void Visit(FieldDefinition fieldDefinition, Unity.Cecil.Visitor.Context context)
 {
     if (!GenericsUtilities.CheckForMaximumRecursion(this._genericContext.Type))
     {
         base.Visit(fieldDefinition, context);
     }
 }
Example #3
0
 protected override void Visit(TypeDefinition type, Unity.Cecil.Visitor.Context context)
 {
     if (type.IsComOrWindowsRuntimeType() && !type.IsInterface)
     {
         InjectBaseTypeIfNeeded(type);
         InjectFinalizer(type);
     }
     base.Visit(type, context);
 }
Example #4
0
 protected override void Visit(MethodDefinition methodDefinition, Unity.Cecil.Visitor.Context context)
 {
     if ((!methodDefinition.HasGenericParameters || ((this._genericContext.Method != null) && (this._genericContext.Method.Resolve() == methodDefinition))) && !GenericsUtilities.CheckForMaximumRecursion(this._genericContext.Type))
     {
         base.VisitTypeReference(methodDefinition.ReturnType, context.ReturnType(methodDefinition));
         foreach (ParameterDefinition definition in methodDefinition.Parameters)
         {
             this.Visit(definition, context.Parameter(methodDefinition));
         }
     }
 }
Example #5
0
 protected override void Visit(GenericInstanceType genericInstanceType, Unity.Cecil.Visitor.Context context)
 {
     if (genericInstanceType.IsEnum())
     {
         ModuleDefinition module = genericInstanceType.Module;
         for (int i = 0; i < genericInstanceType.GenericArguments.Count; i++)
         {
             GenericParameter parameter = genericInstanceType.GenericArguments[i] as GenericParameter;
             if ((parameter != null) && (parameter.Owner == null))
             {
                 genericInstanceType.GenericArguments[i] = module.ImportReference(module.TypeSystem.Object);
             }
         }
     }
     base.Visit(genericInstanceType, context);
 }
 protected override void Visit(TypeReference typeReference, Unity.Cecil.Visitor.Context context)
 {
     if (typeReference.Module == this._module)
     {
         AssemblyNameReference scope = typeReference.Scope as AssemblyNameReference;
         if (scope != null)
         {
             TypeDefinition definition = typeReference.Resolve();
             if (definition == null)
             {
                 throw new InvalidProgramException($"Failed to resolve [{scope.Name}]{typeReference.FullName}.");
             }
             this._resolvedAssemblies.Add(definition.Module.Assembly);
         }
         base.Visit(typeReference, context);
     }
 }
Example #7
0
 protected override void Visit(TypeDefinition typeDefinition, Unity.Cecil.Visitor.Context context)
 {
     if (context.Role != Role.NestedType)
     {
         if (typeDefinition.BaseType != null)
         {
             base.VisitTypeReference(typeDefinition.BaseType, context.BaseType(typeDefinition));
         }
         foreach (FieldDefinition definition in typeDefinition.Fields)
         {
             this.Visit(definition, context.Member(typeDefinition));
         }
         if (this._mode != CollectionMode.Types)
         {
             foreach (MethodDefinition definition2 in typeDefinition.Methods)
             {
                 this.Visit(definition2, context.Member(typeDefinition));
             }
         }
     }
 }
Example #8
0
 protected override void Visit(ArrayType arrayType, Unity.Cecil.Visitor.Context context)
 {
     this.ProcessArray(arrayType.ElementType, arrayType.Rank);
     base.Visit(arrayType, context);
 }