Ejemplo n.º 1
0
    public void Execute()
    {
        var freezableTypeFinder = new FreezableTypeFinder(ModuleDefinition, AssemblyResolver);

        freezableTypeFinder.Execute();

        var exceptionFinder = new ExceptionFinder(ModuleDefinition, AssemblyResolver);

        exceptionFinder.Execute();

        var volatileFinder = new VolatileTypeFinder(ModuleDefinition, AssemblyResolver);

        volatileFinder.Execute();

        var volatileFieldFixer    = new VolatileFieldFixer(volatileFinder);
        var fieldInjector         = new FieldInjector(volatileFinder, ModuleDefinition.TypeSystem, volatileFieldFixer);
        var checkIsFrozenBuilder  = new CheckIsFrozenBuilder(ModuleDefinition.TypeSystem, exceptionFinder);
        var freezeCheckerInjector = new FreezeCheckerInjector(ModuleDefinition, fieldInjector, checkIsFrozenBuilder);

        var typeResolver = new TypeResolver();
        var implementsInterfaceFinder = new ImplementsInterfaceFinder(typeResolver);

        var classes = ModuleDefinition.GetTypes()
                      .Where(x => x.IsClass)
                      .ToList();
        var assemblyProcessor = new AssemblyProcessor(freezeCheckerInjector, implementsInterfaceFinder, LogInfo);

        assemblyProcessor.Execute(classes);

        volatileFieldFixer.Execute(classes);
    }
Ejemplo n.º 2
0
    public void Execute()
    {
        var freezableTypeFinder = new FreezableTypeFinder(ModuleDefinition, AssemblyResolver);
        freezableTypeFinder.Execute();

        var exceptionFinder = new ExceptionFinder(ModuleDefinition, AssemblyResolver);
        exceptionFinder.Execute();

        var volatileFinder = new VolatileTypeFinder(ModuleDefinition, AssemblyResolver);
        volatileFinder.Execute();

        var volatileFieldFixer = new VolatileFieldFixer(volatileFinder);
        var fieldInjector = new FieldInjector(volatileFinder, ModuleDefinition.TypeSystem, volatileFieldFixer);
        var checkIsFrozenBuilder = new CheckIsFrozenBuilder(ModuleDefinition.TypeSystem, exceptionFinder);
        var freezeCheckerInjector = new FreezeCheckerInjector(ModuleDefinition, fieldInjector, checkIsFrozenBuilder);

        var typeResolver = new TypeResolver();
        var implementsInterfaceFinder = new ImplementsInterfaceFinder(typeResolver);

        var classes = ModuleDefinition.GetTypes()
            .Where(x => x.IsClass)
            .ToList();
        var assemblyProcessor = new AssemblyProcessor(freezeCheckerInjector, implementsInterfaceFinder, LogInfo);
        assemblyProcessor.Execute(classes);

        volatileFieldFixer.Execute(classes);
    }
Ejemplo n.º 3
0
        public void Engage()
        {
            foreach (var field in new FieldSelector().Select(context))
            {
                // if the field type is not yet registered throw an exception
                if (!context.Container.IsTypeRegistered(field.FieldType))
                {
                    throw new TypeResolvingFailedException(Strings.TypeNotRegistered);
                }

                // Engage the value
                var fieldValue = context.Container.Resolve(field.FieldType);

                // Set the fields value
                var fieldInjector = new FieldInjector(context, field, fieldValue);
                fieldInjector.Inject();
            }
        }
Ejemplo n.º 4
0
 public FreezeCheckerInjector(ModuleDefinition moduleDefinition, FieldInjector fieldInjector, CheckIsFrozenBuilder checkIsFrozenBuilder)
 {
     this.moduleDefinition     = moduleDefinition;
     this.fieldInjector        = fieldInjector;
     this.checkIsFrozenBuilder = checkIsFrozenBuilder;
 }
Ejemplo n.º 5
0
 public FreezeCheckerInjector(ModuleDefinition moduleDefinition, FieldInjector fieldInjector, CheckIsFrozenBuilder checkIsFrozenBuilder)
 {
     this.moduleDefinition = moduleDefinition;
     this.fieldInjector = fieldInjector;
     this.checkIsFrozenBuilder = checkIsFrozenBuilder;
 }