/// <summary>
        /// Creates a <see cref="T:System.ServiceModel.ServiceHost"/> for a specified type of service with a specific base address.
        /// </summary>
        /// <param name="serviceType">Specifies the type of service to host.</param>
        /// <param name="baseAddresses">The <see cref="T:System.Array"/> of type <see cref="T:System.Uri"/> that contains the base addresses for the service hosted.</param>
        /// <returns>
        /// A <see cref="T:System.ServiceModel.ServiceHost"/> for the type of service specified with a specific base address.
        /// </returns>
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException("serviceType");
            }

            ServiceBehaviorAttribute attribute;
            var lifetime = GetLifetime(serviceType, out attribute);

            if (_container == null)
            {
                var registrar = new ContainerRegistrar();
                registrar.RegisterConcrete(serviceType, lifetime);
                registrar.RegisterModules(serviceType.Assembly);
                _container = registrar.Build();
            }

            var host = new ServiceLocatorServiceHost(_container, serviceType, baseAddresses);

            if (ConfigurationCallback != null)
            {
                ConfigurationCallback(host);
            }

            return(host);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="AsyncDomainEvents" /> class.
 /// </summary>
 /// <param name="container">Griffin.Container.</param>
 /// <param name="scopeListener">Used to handle errors and scoping setup/teardown.</param>
 public AsyncDomainEvents(IParentContainer container, IScopeListener scopeListener)
 {
     _container          = container;
     _scopeListener      = scopeListener;
     _method             = GetType().GetMethod("TriggerPublish", BindingFlags.NonPublic | BindingFlags.Instance);
     _transactionMonitor = new TransactionMonitor(TriggerEvents);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ContainerAdapter" /> class.
 /// </summary>
 /// <param name="container">The Griffin.Container.</param>
 /// <exception cref="System.ArgumentNullException">container</exception>
 public ContainerAdapter(IParentContainer container)
 {
     if (container == null)
     {
         throw new ArgumentNullException("container");
     }
     _container = container;
 }
 /// <summary>
 /// Dispatch commands using our favorite container
 /// </summary>
 /// <param name="container">Container instance.</param>
 public static void DispatchCommands(this IParentContainer container)
 {
     if (container == null)
     {
         throw new ArgumentNullException("container");
     }
     CommandDispatcher.Assign(new Commands.IocDispatcher(new ContainerAdapter(container)));
 }
示例#5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GriffinDependencyResolver"/> class.
 /// </summary>
 /// <param name="container">The container.</param>
 public GriffinDependencyResolver(IParentContainer container)
 {
     if (container == null)
     {
         throw new ArgumentNullException("container");
     }
     _container = container;
 }
        public override void PrepareBasic()
        {
            var registrar = new ContainerRegistrar();

            RegisterBasic(registrar);

            this.container = registrar.Build();
        }
 /// <summary>
 /// Dispatch commands using our favorite container
 /// </summary>
 /// <param name="container">Container instance.</param>
 public static void DispatchEvents(this IParentContainer container)
 {
     if (container == null)
     {
         throw new ArgumentNullException("container");
     }
     DomainEvent.Assign(new DomainEvents.IocDispatcher(new ContainerAdapter(container)));
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ServiceLocatorInstanceProvider"/> class.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <param name="contractType"> </param>
        public ServiceLocatorInstanceProvider(IParentContainer container, Type contractType)
        {
            if (container == null) throw new ArgumentNullException("container");
            if (contractType == null) throw new ArgumentNullException("contractType");

            _container = container;
            _contractType = contractType;
        }
        /// <summary>
        /// Use Griffin.Container to dispatch events
        /// </summary>
        /// <param name="builder">this</param>
        /// <param name="griffinContainer">Your created container, look at the Griffin.Container HP for instructions on how to build it.</param>
        /// <returns>this</returns>
        public static EventPipelineBuilder UseGriffinContainer(this EventPipelineBuilder builder,
                                                               IParentContainer griffinContainer)
        {
            if (builder == null) throw new ArgumentNullException("builder");
            if (griffinContainer == null) throw new ArgumentNullException("griffinContainer");

            builder.UseContainer(new ContainerAdapter(griffinContainer));
            return builder;
        }
示例#10
0
        /// <summary>
        /// Gets the child container.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <returns></returns>
        public IChildContainer GetChildContainer(IParentContainer container)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            return(_childContainer ?? (_childContainer = container.CreateChildContainer()));
        }
示例#11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ServiceLocatorInstanceProvider"/> class.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <param name="contractType"> </param>
        public ServiceLocatorInstanceProvider(IParentContainer container, Type contractType)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }
            if (contractType == null)
            {
                throw new ArgumentNullException("contractType");
            }

            _container    = container;
            _contractType = contractType;
        }
        /// <summary>
        /// Use Griffin.Container to dispatch events
        /// </summary>
        /// <param name="builder">this</param>
        /// <param name="griffinContainer">Your created container, look at the Griffin.Container HP for instructions on how to build it.</param>
        /// <returns>this</returns>
        public static EventPipelineBuilder UseGriffinContainer(this EventPipelineBuilder builder,
                                                               IParentContainer griffinContainer)
        {
            if (builder == null)
            {
                throw new ArgumentNullException("builder");
            }
            if (griffinContainer == null)
            {
                throw new ArgumentNullException("griffinContainer");
            }

            builder.UseContainer(new ContainerAdapter(griffinContainer));
            return(builder);
        }
        public override void Prepare()
        {
            var registrar = new ContainerRegistrar();
            registrar.RegisterType<ISingleton, Singleton>(Lifetime.Singleton);
            registrar.RegisterType<ITransient, Transient>(Lifetime.Transient);
            registrar.RegisterType<ICombined, Combined>(Lifetime.Transient);

            this.container = registrar.Build();

            registrar = new ContainerRegistrar();
            registrar.RegisterType<ICalculator, Calculator>(Lifetime.Transient);

            var containerWithLoggingInterception = registrar.Build();
            containerWithLoggingInterception.AddDecorator(new GriffinLoggingDecorator());
            this.containerWithLoggingInterception = containerWithLoggingInterception;
        }
        public override void Prepare()
        {
            var registrar = new ContainerRegistrar();

            RegisterDummies(registrar);
            RegisterStandard(registrar);
            RegisterComplex(registrar);

            this.container = registrar.Build();

            registrar = new ContainerRegistrar();
            registrar.RegisterType<ICalculator, Calculator>(Lifetime.Transient);

            var containerWithLoggingInterception = registrar.Build();
            containerWithLoggingInterception.AddDecorator(new GriffinLoggingDecorator());
            this.containerWithLoggingInterception = containerWithLoggingInterception;
        }
        public override void Prepare()
        {
            var registrar = new ContainerRegistrar();

            RegisterDummies(registrar);
            RegisterStandard(registrar);
            RegisterComplex(registrar);

            this.container = registrar.Build();

            registrar = new ContainerRegistrar();
            registrar.RegisterType <ICalculator, Calculator>(Lifetime.Transient);

            var containerWithLoggingInterception = registrar.Build();

            containerWithLoggingInterception.AddDecorator(new GriffinLoggingDecorator());
            this.containerWithLoggingInterception = containerWithLoggingInterception;
        }
        public void Prepare()
        {
            var registrar = new ContainerRegistrar();

            registrar.RegisterType <ISingleton, Singleton>(Lifetime.Singleton);
            registrar.RegisterType <ITransient, Transient>(Lifetime.Transient);
            registrar.RegisterType <ICombined, Combined>(Lifetime.Transient);

            this.container = registrar.Build();

            registrar = new ContainerRegistrar();
            registrar.RegisterType <ICalculator, Calculator>(Lifetime.Transient);

            var containerWithLoggingInterception = registrar.Build();

            containerWithLoggingInterception.AddDecorator(new GriffinLoggingDecorator());
            this.containerWithLoggingInterception = containerWithLoggingInterception;
        }
        public override void Prepare()
        {
            var registrar = new ContainerRegistrar();

            RegisterBasic(registrar);
            
            RegisterPropertyInjection(registrar);

            this.container = registrar.Build();

            registrar = new ContainerRegistrar();
            registrar.RegisterType<ICalculator1, Calculator1>(Lifetime.Transient);
            registrar.RegisterType<ICalculator2, Calculator2>(Lifetime.Transient);
            registrar.RegisterType<ICalculator3, Calculator3>(Lifetime.Transient);

            var containerWithLoggingInterception = registrar.Build();
            containerWithLoggingInterception.AddDecorator(new GriffinLoggingDecorator());
            this.containerWithLoggingInterception = containerWithLoggingInterception;
        }
        public override void Prepare()
        {
            var registrar = new ContainerRegistrar();

            RegisterBasic(registrar);

            RegisterPropertyInjection(registrar);

            this.container = registrar.Build();

            registrar = new ContainerRegistrar();
            registrar.RegisterType <ICalculator1, Calculator1>(Lifetime.Transient);
            registrar.RegisterType <ICalculator2, Calculator2>(Lifetime.Transient);
            registrar.RegisterType <ICalculator3, Calculator3>(Lifetime.Transient);

            var containerWithLoggingInterception = registrar.Build();

            containerWithLoggingInterception.AddDecorator(new GriffinLoggingDecorator());
            this.containerWithLoggingInterception = containerWithLoggingInterception;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ServiceLocatorServiceHost"/> class.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <param name="serviceConcrete">Type of the service.</param>
        /// <param name="baseAddresses">The base addresses.</param>
        public ServiceLocatorServiceHost(IParentContainer container, Type serviceConcrete, params Uri[] baseAddresses)
            : base(serviceConcrete, baseAddresses)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            ApplyServiceBehaviors(container);
            ApplyContractBehaviors(container);

            foreach (var contractDescription in ImplementedContracts.Values)
            {
                var contractBehavior =
                    new ServiceLocationContractBehavior(new ServiceLocatorInstanceProvider(container,
                                                                                           contractDescription.
                                                                                           ContractType));

                contractDescription.Behaviors.Add(contractBehavior);
            }
        }
        /// <summary>
        /// Creates a <see cref="T:System.ServiceModel.ServiceHost"/> for a specified type of service with a specific base address.
        /// </summary>
        /// <param name="serviceType">Specifies the type of service to host.</param>
        /// <param name="baseAddresses">The <see cref="T:System.Array"/> of type <see cref="T:System.Uri"/> that contains the base addresses for the service hosted.</param>
        /// <returns>
        /// A <see cref="T:System.ServiceModel.ServiceHost"/> for the type of service specified with a specific base address.
        /// </returns>
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            if (serviceType == null) throw new ArgumentNullException("serviceType");

            ServiceBehaviorAttribute attribute;
            var lifetime = GetLifetime(serviceType, out attribute);

            if (_container == null)
            {
                var registrar = new ContainerRegistrar();
                registrar.RegisterConcrete(serviceType, lifetime);
                registrar.RegisterModules(serviceType.Assembly);
                _container = registrar.Build();
            }

            var host = new ServiceLocatorServiceHost(_container, serviceType, baseAddresses);
            if (ConfigurationCallback != null)
                ConfigurationCallback(host);

            return host;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ServiceLocatorServiceHost"/> class.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <param name="serviceConcrete">Type of the service.</param>
        /// <param name="baseAddresses">The base addresses.</param>
        public ServiceLocatorServiceHost(IParentContainer container, Type serviceConcrete, params Uri[] baseAddresses)
            : base(serviceConcrete, baseAddresses)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            ApplyServiceBehaviors(container);
            ApplyContractBehaviors(container);

            foreach (var contractDescription in ImplementedContracts.Values)
            {
                var contractBehavior =
                    new ServiceLocationContractBehavior(new ServiceLocatorInstanceProvider(container,
                                                                                           contractDescription.
                                                                                               ContractType));

                contractDescription.Behaviors.Add(contractBehavior);
            }
        }
 public GriffinContainerAdapter(IParentContainer container)
 {
     _container = container;
 }
示例#23
0
 public GriffinHandlerScopeFactoryAdapter(IParentContainer container)
 {
     _container = container ?? throw new ArgumentNullException(nameof(container));
 }
 public override void Dispose()
 {
     // Allow the container and everything it references to be disposed.
     this.container = null;
     this.containerWithLoggingInterception = null;
 }
        public override void PrepareBasic()
        {
            var registrar = new ContainerRegistrar();

            RegisterBasic(registrar);

            this.container = registrar.Build();
        }
 public override void Dispose()
 {
     // Allow the container and everything it references to be garbage collected.
     this.container = null;
     this.containerWithLoggingInterception = null;
 }
 public void Dispose()
 {
     // Allow the container and everything it references to be disposed.
     this.container = null;
     this.containerWithLoggingInterception = null;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GriffinDependencyResolver"/> class.
 /// </summary>
 /// <param name="container">The container.</param>
 public GriffinDependencyResolver(IParentContainer container)
 {
     if (container == null) throw new ArgumentNullException("container");
     _container = container;
 }