如何使用 Castle.Windsor 通过依赖注入传递构造函数参数?
我正在连接我的第一个 SubSonic 3 应用程序(在 ASP.NET MVC 1.0 前端),并正在查看 Rob 的 SimpleRepository。我使用 Castle.Windsor 作为注入框架。
在我的应用程序启动中,我配置 Castle 将 SubSonic SimpleRepository 绑定到 SubSonic IRepository。那里没什么复杂的。但是,SimpleRepository 有一个构造函数重载,它采用两个值:一个连接字符串名称和一组 SimpleRepositoryOptions。过去没有深入研究 Castle,目前尚不清楚是否有办法通过配置(或其他方式)指定 ctor 参数。
现在,我有一个 SimpleRepository 的自定义实现,它显式创建一个 SimpleRepository,其中的参数位于其无参数构造函数中,但如果我想在任何时间点更改这些参数,则需要更改代码并重新编译。
有没有更优雅的方法来配置 Castle 以获取构造函数参数?
I am wiring up my first SubSonic 3 application (in an ASP.NET MVC 1.0 front-end) and am looking at Rob's SimpleRepository. I'm using Castle.Windsor as an injection framework.
In my application startup, I configure Castle to bind a SubSonic SimpleRepository to a SubSonic IRepository. Nothing complicated there. However, the SimpleRepository has a ctor overload which takes two values: a connection string name and a set of SimpleRepositoryOptions. Not having dug too deep into Castle in the past, it's not clear if there is a way to specify the ctor arguments via configuration (or some other means).
Right now, I have a custom implementation of the SimpleRepository that explicitly creates a SimpleRepository with those arguments in it's parameterless ctor, but if I want to change these at any point in time, it requires changing the code and recompiling.
Is there a more elegant way to configure Castle to take constructor arguments?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您使用 XML 文件配置 Windsor,则可以如下定义 ctor 参数及其值:
有关详细信息,请参阅 Windsor 配置参考:
http://www.castleproject.org/container/documentation/v1rc3/manual/windsorconfigref.html
If you're configuring Windsor using an XML file, you define your ctor arguments and their values like this:
See the Windsor configuration reference for more info:
http://www.castleproject.org/container/documentation/v1rc3/manual/windsorconfigref.html
请参阅此 Wiki 页面。该页面上所谓的“参数”是构造函数参数(这是必需参数)或属性(可选参数)
See this wiki page. What's called "parameters" on that page is either a constructor parameter (which is a required parameter) or a property (optional parameter)