我正在開發一個使用服務方法的消息/響應模式公開WCF服務的應用程序。該應用程序使用Unity 2.0進行依賴項注入,並使用MS Patterns的驗證應用程序塊&實踐。我已經使用一個自定義的HttpModule綁定到WCF,我從幾個網站上拿回來,一切都很好。使用WCF,Unity和VAB驗證參數
在我服務的接口我有這樣的方法: DoSomethingResponse DoSomething的(DoSomethingRequest要求)
我可以很容易地連接VAB屬性的服務合同,以驗證「請求」永遠不能爲null,但我也想驗證請求對象的內容。
爲此,我將驗證器注入到DoSomethingRequest構造函數中,幷包含一個內部範圍的IsValid屬性,該屬性處理與VAB驗證器的交互。不幸的是,這個構造函數沒有被調用,因爲WCF反序列化了對象,並且沒有使用構造函數。沒有深入瞭解請求對象是一個簡單的DTO還是具有一些服務器端業務邏輯的優點,有沒有辦法將依賴關係乾淨地注入傳入WCF服務的對象作爲參數?
不完全。 DoSomethingRequest是一個DataContract。我想在採取進一步行動之前驗證其DataMembers。實質上,在我的服務方法中,我調用request.IsValid來確定是否應執行請求的操作。 IsValid需要通常在構造函數中注入的驗證器實例。 – SonOfPirate 2011-03-10 17:38:34