public InterfaceImplementationWeaver(ConstructorWeaver constructorWeaver, MethodWeaver methodWeaver)
 {
     this.constructorWeaver = constructorWeaver;
     this.methodWeaver = methodWeaver;
     this.objectTypeReference = WeavingInformation.ReferenceFinder.GetTypeReference(typeof(object));
     this.objectConstructorReference = WeavingInformation.ReferenceFinder.GetMethodReference(this.objectTypeReference, x => x.IsConstructor);
 }
Пример #2
0
        public static void Execute()
        {
            IEnumerable<TypeDefinition> typesToProxy = WeavingInformation.ModuleDefinition.Types
                .Where(HasStaticProxyAttribute)
                .ToList();

            var constructorWeaver = new ConstructorWeaver();
            var methodWeaver = new MethodWeaver();

            var interfaceImplementationWeaver = new InterfaceImplementationWeaver(constructorWeaver, methodWeaver);
            var classDecorationWeaver = new ClassDecorationWeaver(constructorWeaver, methodWeaver);

            ImplementInterfaces(
                typesToProxy.Where(x => x.IsInterface),
                interfaceImplementationWeaver);

            DecorateClasses(classDecorationWeaver, typesToProxy.Where(x => x.IsClass).ToList());
        }
 public ClassDecorationWeaver(ConstructorWeaver constructorWeaver, MethodWeaver methodWeaver)
 {
     this.constructorWeaver = constructorWeaver;
     this.methodWeaver = methodWeaver;
 }