Example #1
0
 private static void RegisterSessionFactoryFor(string sessionFactoryName, IWindsorContainer windsorContainer)
 {
     windsorContainer.Register(
         Component.For <ISessionFactory>()
         .Named(GetSessionFactoryProviderKey(sessionFactoryName))
         .Configuration(Attrib.ForName("factoryId").Eq(sessionFactoryProviderComponentKey),
                        Attrib.ForName("factoryCreate").Eq("GetFactory"))
         .Parameters(Parameter.ForKey("factoryId").Eq(sessionFactoryName)));
 }
Example #2
0
        public static ComponentRegistration FactoryMethod(this ComponentRegistration reg, IKernel kernel, Type type, Func <object> factory)
        {
            Type item        = typeof(InternalFactory <>).MakeGenericType(type);
            var  factoryName = item.FullName;

            kernel.Register(Component.For(item).Named(factoryName).Instance(new GenericFactory(factory)).LifeStyle.Transient.OnlyNewServices());
            reg.Configuration(Attrib.ForName("factoryId").Eq(factoryName), Attrib.ForName("factoryCreate").Eq("Create"));
            return(reg);
        }
        public void BuildComponentModel(IKernel kernel, ComponentModel model)
        {
            var node = GetSubscribersNode(model.Configuration);

            foreach (var eventSubscriber in subscribers)
            {
                var child = Child.ForName("subscriber").Eq(
                    Attrib.ForName("id").Eq(eventSubscriber.SubscriberComponentName),
                    Attrib.ForName("event").Eq(eventName),
                    Attrib.ForName("handler").Eq(EventHandlerMethodName(eventSubscriber)));
                child.ApplyTo(node);
            }
        }
Example #4
0
        public void Extensions_Configuration()
        {
            // http://docs.castleproject.org/Windsor.Fluent-Registration-API-Extensions.ashx

            _container.Register(
                Component.For <UserInfo>()
                .Configuration(
                    Child.ForName("HomeAddr").Eq(Attrib.ForName("Street").Eq("집"),
                                                 Attrib.ForName("Phone").Eq("444-4444")),
                    Child.ForName("OfficeAddr").Eq(Attrib.ForName("Street").Eq("사무실"),
                                                   Attrib.ForName("Phone").Eq("555-5555"))));

            var userInfo = _container.Resolve <UserInfo>();

            userInfo.Should().Not.Be.Null();
            userInfo.HomeAddr.Street.Should().Be("집");
            userInfo.OfficeAddr.Street.Should().Be("사무실");
        }
Example #5
0
        public void AddComponent_WithComplexConfiguration_WorksFine()
        {
            Kernel.Register(
                Component.For <ClassWithComplexParameter>()
                .Configuration(
                    Child.ForName("parameters").Eq(
                        Attrib.ForName("notUsed").Eq(true),
                        Child.ForName("complexparam").Eq(
                            Child.ForName("complexparametertype").Eq(
                                Child.ForName("mandatoryvalue").Eq("value1"),
                                Child.ForName("optionalvalue").Eq("value2")
                                )
                            )
                        )
                    )
                );

            var component = Kernel.Resolve <ClassWithComplexParameter>();

            Assert.IsNotNull(component);
            Assert.IsNotNull(component.ComplexParam);
            Assert.AreEqual("value1", component.ComplexParam.MandatoryValue);
            Assert.AreEqual("value2", component.ComplexParam.OptionalValue);
        }