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))); }
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); } }
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("사무실"); }
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); }