簡體   English   中英

當還有專門的服務類型時,使用 Castle Windsor 的流暢接口在裝飾器鏈中注冊組件?

[英]Using Castle Windsor's fluent interface to register components in a decorator chain, when there are also specialised service-types?

我正在嘗試為基於 IRepository 的數據訪問實現裝飾器鏈。 我有一個執行數據訪問的存儲庫(目前只是內存列表){1},我有一個執行驗證 {2}。 最重要的是,我有一個專門的知識庫,IUsersRepository {3},它定義了基本接口上的另一個方法。 我在最新的主干版本 5376 上運行。

我希望能夠使用流暢的界面注冊我的組件 - 是否可以像通過 XML 一樣指定要用作innerRepo 的服務的鍵? 如果是這樣,如何? (有關 XML 配置示例,請參閱Bitter Coder Decorator 教程)。 除了其他任何事情外,我寧願不需要依賴注冊順序。

我正在關注這篇博文

如果我向容器詢問 IRepository {4},我已經能夠使裝飾器鏈正常工作; 我看到我的 ValidatingRepository 方法在我的數據訪問之前被調用。 但是,如果我向容器詢問 IUserRepository(我得到一個 InvalidCastException - 我想這是預期的,但它是否可以解決?),我無法讓它工作。

我想避免在我的服務中使用一個裝飾存儲庫和一個專用方法存儲庫; 這讓我覺得容易出錯。 目前,我的專用方法都是通過不同的標准來獲取實體——我想我可以讓我的 Get 方法采用分離標准——這將允許我的界面上只有一個,並消除對專用接口。 除了我不被允許,因為我們還沒有決定絕對使用 NHibernate。 也許如果我讓 IRepo.Get 接受委托或 IQueryable? 有任何想法嗎? 我整個上午都在用頭撞這個,如果我有狹隘的視野,我也不會感到驚訝,而且還有一種不同的、更好的方法; 歡迎任何建議!

{1} - {4} 可以在實用程序庫的復制/粘貼工具中看到。

此處交叉發布(附有解決方案)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM