我有一個ApiController看起來像這樣的方法:Asp.Net Web Api - 不綁定/格式化參數的屬性?
public IEnumerable<Items> GetSlideSets() {
IServiceClass serviceClass = new ServiceClass();
//...
是的,我知道這是不好的設計,但我在不同的迭代解決這個問題。我想我可以簡單地重用控制器(爲什麼不,我可以從我的IoC容器中取出它)。唯一的問題是,在這種情況下,我需要注入的IServiceClass
我自己的實現,很容易:通過一個普通的API調用Optionalparameter 'serviceClass' is not supported by FormatterParameterBinding
調用這個時候
public IEnumerable<Items> GetSlideSets(IServiceClass serviceClass = null) {
serviceClass = serviceClass ?? new ServiceClass();
//...
除了現在我得到的錯誤。
我知道有各種控制綁定的屬性。是否有一個我可以放在參數說,它不應該綁定。
你可以移動'serviceClass'到控制器的範圍,而不是操作方法你現在擁有它的範圍? – 2013-05-06 02:06:06
IoC通常在對象構造時發生,因此IServiceClass參數需要是一個構造函數參數(即您複製到私有實例字段並從中使用)而不是方法參數。也就是說,他說了什麼。 – ChrisF 2013-05-06 03:08:04
這意味着ServiceClass會初始化任何控制器方法調用。在更好的體系結構中,這不會是一個問題,但是這是一個已經實現的原型,而路由和控制器重構等事情則是另一次迭代。 @ChrisF - 你是對的,它的這一部分只是常規的DI,而不是IoC,我只是通過參數注入依賴。我也可以通過一個屬性獲得類似的結果,但我正在尋找屬性。 – 2013-05-06 14:19:46