我所拥有的是舞台,一些界面以及注册部分。问题是我需要将一些参数定义为固定参数,将其他参数定义为变量。
interface IDoSomething {
void DoWork();
}
interface IDoMath(){
void DoWork();
}
interface IBehaviorBusiness{
void Do();
}
class BehaviorBusiness {
...
public BehaviorBusiness(IDoSomething doSomething, IDoMatch doMatch, string connection){};
...
}
是否可以使用windsor容器在声明中定义参数连接,并从容器中取出IDosomething
和IDoMatch
?
container.Register(
Component.For<IDoSomething>()
...
}
container.Register(
Component.For<IDoMatch>()
...
);
这是具体问题。
container.Register(
Component.For<IBehaviorBusiness>()
.ImplementedBy<BehaviorBusiness>()
.DependsOn(Dependency.OnComponent<IDoSomething, [default]>(),
Dependency.OnComponent<IDoMatch, [default]>(),
Dependency.OnValue("connection", connectionString))
.LifeStyle.Transient
);
如果存在,哪个语法正确?
答案 0 :(得分:1)
如果连接字符串来自您的应用程序设置,请使用Dependency.OnAppSettingsValue()
:
container.Register(
Component.For<IBehaviorBusiness>()
.ImplementedBy<BehaviorBusiness>()
.DependsOn(Dependency.OnAppSettingsValue("connection", "connectionString"))
.LifeStyle.Transient
);
这里,“connection”是类'构造函数中参数的名称,“connectionString”是应用程序设置(即Web.Config)中连接字符串值的键。您不需要指定其他值,Windsor将像往常一样解决它们。