2010-11-12 60 views
1

難道有人指示我如何使用Ninject創建自定義「注入」屬性?Ninject自定義注入屬性

我想做到以下幾點:

  • InjectView - 自定義的「注入」屬性

當此屬性的屬性是被注入,注入的值是從裝一個「ViewManager」類。

我發現了一個與ISelector的例子來決定是否要注入屬性/字段,但我無法找到如何添加一個自定義的「注入策略」 - 我想委派的注入實際值給我的ViewManager。

回答

4

它已經被支持,可以通過內核的簡單配置來完成。

new StandardKernel(new NinjectSettings() { InjectAttribute = typeof(MyOwnInjectAttribute) }; 
+0

嗨,謝謝你的迴應。 – user506262 2010-11-13 19:57:27

+0

問題是,這只是支持更改哪個屬性用於注入。我想要的是,每個具有此屬性的屬性都將從「特定提供者」中獲取值,並且在決定要注入的值之前還需要訪問該屬性。例如: [InjectViewRegion(Id = Infrastructure.ViewRegions.Login)] private IViewRegion LoginViewRegion {get;組; } 當爲此屬性注入值時,我想要訪問InjectViewRegion屬性,併爲指定的「Id」註冊視圖區域。 再次感謝! – user506262 2010-11-13 20:01:49

3

我通過添加自定義的IInjectionHeuristic來解決這個問題,它允許通過我的自定義屬性進行注入。然後我還添加了一個自定義的IBindingResolver,它爲每個類型添加了一個額外的綁定,解決了這個綁定有一個條件檢查自定義屬性,以便它不破壞任何以前的綁定...

Tha綁定創建定製的IBindingResolver會設置一個本地的「ProviderCallback」,它使用提取的屬性並將請求傳遞給一個內部的ViewRegionManager實例。

希望這有助於在任何人想要在未來做類似的事情。