我正在尝试为我的数据访问实现一个装饰器链 I存储库。我有一个存储数据的存储库- 访问(目前只是内存中的列表){1},我有一个 进行验证{2}。除此之外,我还有自己的专业 存储库,IUsersRepository {3},它定义了另一个方法 基础接口(interface)。我正在最新的 trunk 版本 5376 上运行。
我希望能够使用 Fluent 注册我的组件 接口(interface) - 是否可以通过 XML 指定 key 用作innerRepo 的服务?如果是这样,怎么办? (参见Bitter Coder Decorator tutorial XML 配置示例)。我宁愿不需要依赖 注册顺序,除了其他任何事情。
我正在关注this blog post .
如果我询问,我就能让装饰器链正常工作 IRepository {4} 的容器;我看到我的 ValidatingRepository 方法在我的数据访问之前被调用。但是我 如果我向容器询问,它就无法工作 IUserRepository (我得到一个 InvalidCastException - 我猜这是 预期的,但它可以解决吗?)。
我想避免需要使用一个装饰库和一个 我的服务中的专业方法存储库;这让我印象深刻 容易出错。目前,我的专业方法都是与 按不同标准获取实体 - 我想我可以让我的 Get 方法采用独立的标准 - 这将允许我只拥有 我的界面上有一个,并且无需专门的 接口(interface)。但我不被允许这样做,因为我们还没有决定 一定要使用NHibernate。也许如果我让 IRepo.Get 采取 委托(delegate)还是 IQueryable?有任何想法吗?我一直在敲头 整个早上都在反对这个,如果我有隧道也不会感到惊讶 愿景,并且有一种不同的、更好的方法;任何建议都是 欢迎!
{1} - {4} 可见 utilitybase的复制/粘贴功能。
最佳答案
交叉发布here (含溶液)。
关于c# - 当还有专门的服务类型时,使用 CaSTLe Windsor 的流畅接口(interface)在装饰器链中注册组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197278/