簡體   English   中英

將依賴項注入自定義ModelBinder

[英]Injecting a dependency into a custom ModelBinder

我現在正在開發一個ASP.net MVC項目,我想知道以下是否可行:我有一個自定義的ModelBinder類,它引用了一個服務(本質上是一個fetcher)作為依賴項。 我希望使用IoC容器(當前為Ninject)注入依賴項,但在方法鏈中似乎沒有任何地方可以插入一些內容,即從IoC容器中加載模型綁定器。

我的第一個想法是有一個通用的對象綁定器,然后嘗試從容器中檢索特定的ModelBinder,如果沒有找到則返回null,然后將其作為綁定器,例如:ModelBinders.Binders.Add(typeof(object) )的typeof(NinjectModelBinder));

但我不確定

  • a)如果這樣可行
  • b)如果它真的是正確的事情

我可以放棄復雜對象的解析直到Action方法,但是能夠提供復雜對象(基本上是從數據訪問層加載和構建)作為操作的參數會更清晰,更可取。

任何想法/幫助表示贊賞。

我認為你將不得不在模型綁定器中進行服務定位器調用,或者建立模型綁定器,或者兩者兼而有之。

    ModelBinders.Binders.Add(typeof(Customer), Resolve<CustomerBinder>());

我個人在我的場景中使用setter注入類似於你的。 在查找之后,NInject調用此屬性注入。 它起作用並完成工作。

在你的模型綁定器中,你可以調用類似的東西

IMyFetcher db = DependencyResolver.Current.GetService<IMyFetcher>();

暫無
暫無

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

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