相关疑难解决方法(0)

Castle Windsor IOC:将构造函数参数传递给子组件

以下代码仅用于演示目的.

假设我有2个组件(businessService和dataService)和一个UI类.

UI类需要业务服务,businessService需要dataService,而dataService需要依赖connectionString.

形成我需要解析业务服务的UI类,所以我写下面的代码:

var service = container.Resolve<BusinessService>(new { dependancy = "con string 123" }));
Run Code Online (Sandbox Code Playgroud)

请注意,dependance是connectionString构造函数参数.

但上面的代码不起作用,说dataService期望依赖性不满意.

无法创建组件'dataService',因为它具有要满足的依赖性.dataService正在等待以下依赖项:

密钥(具有特定密钥的组件) - 未注册的依赖性.

所以作为一种解决方法我这样做:

var service = container.Resolve<BusinessService>(new { dataService = container.Resolve<IDataService>(new { dependancy = "123" }) });
Run Code Online (Sandbox Code Playgroud)

但是从设计,编码风格和许多角度来看,这不是一个很好的方法.

所以,如果您可以建议为什么它不能以简单的方式工作或者您有更好的解决方法请分享.

.net castle-windsor

6
推荐指数
1
解决办法
4866
查看次数

标签 统计

.net ×1

castle-windsor ×1