我有這個DDD應用程序,在演示上,與Ninject MVC。ASP.NET MVC 5篩選器和Ninject
我有CrossCutting Layer綁定來自所有圖層的注入,它像一個魅力。
什麼我不能做的工作,是當涉及到過濾器屬性。我有這個篩選器檢查一個cookie,並根據它的值,在數據庫上執行查詢。有了這個架構,我不能讓我的過濾器直接訪問我的知識庫,這將不尊重我應用的方法。
我有我的IFooAppService接口,並有它的方法,最終會擊中數據庫的請求。我可以成功地將它注入到任何Controller構造函數中,並且它會執行我的_fooAppService.Query(),但是我的應用程序中的某些動作上面有這個XooFilter,並且我無法將_fooAppService傳遞給它。這裏是我的XooFilter:
public class XooFilter : ActionFilterAttribute
{
private readonly IFooAppService _fooAppService;
public XooFilter(IFooAppService fooAppService)
{
_fooAppService = fooAppService;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// LOGIC...
var fooValue = _fooAppService.Query();
// MORE LOGIC..
}
}
但是,當我插入我的過濾器上方的任何動作[XooFilter],它不會工作。它說過濾器沒有0元素的構造函數。
我只是不知道如何很好地做到這一點,並保持DDD和IoC的特點。我發現下面的文章,但找不到任何答案:
Injecting dependencies into ASP.NET MVC 3 action filters. What's wrong with this approach?
[不依賴注入到你的屬性(HTTPS:/ /www.cuttingedge.it/blogs/steven/pivot/entry.php?id=98)。期!使你的[屬性被動](http://blog.ploeh.dk/2014/06/13/passive-attributes/),或使你的屬性[謙卑的對象](http://xunitpatterns.com/Humble%20Object .html)描述[這裏](https://stackoverflow.com/questions/29915192/unity-property-injection-on-authorizeattribute/29916075#29916075)。 – Steven
那我該怎麼做?每次調用這些過濾器時,都需要訪問數據庫。編輯:我很新,IoC和DI好友,但我有基本知識。 –
閱讀引用文章並回答後,您將獲得足夠的信息,以便就如何解決問題做出明智的決定。 – Steven