private void Setup(TfsDriveParameter dynamicParameters)
        {
            Container = new UnityContainer();
            Container.AddNewExtension <Interception>();

            //Container.RegisterType<IContainer, TfsDrive>(new TransientLifetimeManager(), new InterceptionBehavior<PolicyInjectionBehavior>(), new Interceptor<InterfaceInterceptor>());
            Container.RegisterType <IContainer, TfsDrive>(new TransientLifetimeManager());
            Container.RegisterType <CachingLifetimeManager>(new ContainerControlledLifetimeManager());

            if (null != dynamicParameters.DataService)
            {
                Container.RegisterInstance(dynamicParameters.DataService);
            }
            else
            {
                Container.RegisterType <ITfsDataService, TfsRestDataService>(new ContainerControlledLifetimeManager(), new InjectionConstructor(
                                                                                 new InjectionParameter <string>(dynamicParameters.Url),
                                                                                 new InjectionParameter <string>(dynamicParameters.AccessToken)
                                                                                 ), new InterceptionBehavior <PolicyInjectionBehavior>(), new Interceptor <InterfaceInterceptor>());
            }

            PolicyDefinition loggingPolicy = Container.Configure <Interception>().AddPolicy("logging");

            loggingPolicy.AddMatchingRule <AssemblyMatchingRule>(new InjectionConstructor(new InjectionParameter(GetType().Assembly.FullName)));
            loggingPolicy.AddCallHandler <LoggingCallHandler>(new ContainerControlledLifetimeManager(), new InjectionConstructor());
            loggingPolicy.AddCallHandler <PerformanceMeasurementHandler>(new ContainerControlledLifetimeManager(), new InjectionConstructor());
            loggingPolicy.AddCallHandler <CachingCallHandler>(Container.Resolve <CachingLifetimeManager>(), new InjectionConstructor());

            TfsDataService = Container.Resolve <ITfsDataService>();
        }
Пример #2
0
 internal void Configure(PolicyDefinition policyDefinition)
 {
     if (string.IsNullOrEmpty(this.TypeName))
     {
         policyDefinition.AddCallHandler(this.Name);
     }
     else
     {
         policyDefinition.AddCallHandler(
             this.Type,
             this.Name,
             this.Lifetime != null ? this.Lifetime.CreateLifetimeManager() : null,
             this.Injection != null ? this.Injection.GetInjectionMembers() : new InjectionMember[0]);
     }
 }
Пример #3
0
 internal void Configure(IUnityContainer container, PolicyDefinition policyDefinition)
 {
     if (string.IsNullOrEmpty(this.TypeName))
     {
         policyDefinition.AddCallHandler(this.Name);
     }
     else
     {
         Type handlerType = TypeResolver.ResolveType(TypeName);
         IEnumerable <InjectionMember> injectionMembers =
             Injection.SelectMany(
                 element => element.GetInjectionMembers(container, typeof(ICallHandler), handlerType, Name));
         policyDefinition.AddCallHandler(handlerType, Lifetime.CreateLifetimeManager(),
                                         injectionMembers.ToArray());
     }
 }
Пример #4
0
 internal void Configure(IUnityContainer container, PolicyDefinition policyDefinition)
 {
     if (string.IsNullOrEmpty(this.TypeName))
     {
         policyDefinition.AddCallHandler(this.Name);
     }
     else
     {
         Type handlerType = TypeResolver.ResolveType(TypeName);
         IEnumerable<InjectionMember> injectionMembers =
             Injection.SelectMany(
                 element => element.GetInjectionMembers(container, typeof(ICallHandler), handlerType, Name));
         policyDefinition.AddCallHandler(handlerType, Lifetime.CreateLifetimeManager(),
             injectionMembers.ToArray());
     }
 }
 static H容器()
 {
     _IUnityContainer  = new UnityContainer();
     _Interception     = _IUnityContainer.AddNewExtension <Interception>().Configure <Interception>();
     _PolicyDefinition = _Interception.AddPolicy("MyPolicy");
     _PolicyDefinition.AddMatchingRule <AlwaysMatchingRule>();
     _PolicyDefinition.AddCallHandler <LoggerCallHandler>(new ContainerControlledLifetimeManager());
 }
Пример #6
0
        public static PolicyDefinition AddSingletonCallHandler <T>(
            this PolicyDefinition policyDefinition)
            where T : ICallHandler
        {
            if (policyDefinition == null)
            {
                throw new ArgumentNullException(nameof(policyDefinition));
            }

            return(policyDefinition
                   .AddCallHandler <T>(new ContainerControlledLifetimeManager())
                   );
        }
Пример #7
0
        public void TestInitialize()
        {
            Container = new UnityContainer();
            Container.AddNewExtension <Interception>();

            Container.RegisterType <ITenantStore, TenantStore>(new InterceptionBehavior <PolicyInjectionBehavior>(), new Interceptor <InterfaceInterceptor>());
            Container.RegisterType <ISurveyStore, SurveyStore>(new InterceptionBehavior <PolicyInjectionBehavior>(), new Interceptor <InterfaceInterceptor>());

            InjectionProperty first  = new InjectionProperty("Order", 1);
            InjectionProperty second = new InjectionProperty("Order", 2);

            PolicyDefinition loggingPolicy = Container.Configure <Interception>().AddPolicy("logging");

            loggingPolicy.AddMatchingRule <AssemblyMatchingRule>(new InjectionConstructor(new InjectionParameter(GetType().Assembly.FullName)));
            loggingPolicy.AddCallHandler <LoggingCallHandler>(new ContainerControlledLifetimeManager(), new InjectionConstructor(), first);

            PolicyDefinition cachingPolicy = Container.Configure <Interception>().AddPolicy("caching");

            cachingPolicy.AddMatchingRule <AssemblyMatchingRule>(new InjectionConstructor(new InjectionParameter(GetType().Assembly.FullName)));
            cachingPolicy.AddCallHandler <CachingCallHandler>(new ContainerControlledLifetimeManager(), new InjectionConstructor(), second);
        }