在 Castle Windsor 中,您可以使用几种方法来从代码中指定构造函数参数:
DependsOn
属性: 首先,在您的类中定义构造函数参数,并使用 DependsOn
属性将其与类关联。例如:
public class MyClass
{
private readonly string _parameter;
public MyClass(string parameter)
{
_parameter = parameter;
}
}
assembly: DependsOn(typeof(MyClass))
然后,在您的安装程序类中,使用 Component.For<T>().Dependency
方法指定构造函数参数:
public class MyInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<MyClass>().DependsOn(Parameter.ForKey("parameter").Eq("myValue"))
);
}
}
TypedFactoryFacility
: 首先,在您的类中定义构造函数参数,并使用 TypedFactoryFacility
创建工厂来生成类的实例。例如:
public interface IMyClassFactory
{
MyClass Create(string parameter);
}
public class MyClass
{
private readonly string _parameter;
public MyClass(string parameter)
{
_parameter = parameter;
}
}
public class MyInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.AddFacility<TypedFactoryFacility>();
container.Register(
Component.For<MyClass>().Named("myClass"),
Component.For<IMyClassFactory>().AsFactory()
);
}
}
然后,在您的应用程序代码中使用工厂来创建 MyClass
的实例:
var myClassFactory = container.Resolve<IMyClassFactory>();
var myClass = myClassFactory.Create("myValue");
这些方法允许您在 Castle Windsor 中指定构造函数参数,以便在创建类的实例时使用这些参数。
没有搜到相关的沙龙