2012-01-13 71 views
1

我想'任何接口從這個接口列表中繼承一個或多個接口'到使用ninject 2的特定提供者。這裏的IBindingResolver實現是否適合?我如何在ninject中自定義綁定

+0

所以,你要綁定的接口我的所有實現在您的應用程序接口? – 2012-01-13 22:33:01

回答

1

沒有 - 使用ninject.extensions.conventions代替

kernel.Bind(
    x => x.FromThisAssembly() 
      .SelectTypesInheritedFrom<IMyInterface>() 
      .BindToAllInterfaces() 
      .Configure((c, s) => c.InSingletonScope())); 
+0

雖然這是所問問題的最佳答案,但我不確定它會對我有用。我在此處查看OpenGenericBindingResolver作爲示例。 – JeffreyABecker 2012-01-16 16:14:11

+0

我有3個程序集:域定義接口,數據定義實現,Web消費。說域定義IFoo和IBar。同時使用Web的控制器將定義IFooBar並使用它。理想情況下,我想要做的是檢測這些聚合接口並返回一個攔截代理,它將調用委託給各個實現。我沒有看到我會如何與擴展公約做到這一點。 – JeffreyABecker 2012-01-16 16:16:52

+0

@JeffreyABecker在這種情況下,您必須編寫自己的IBindingGenerator以將接口綁定到您的代理。 但你真的想要這樣一個醜陋的東西?做什麼的?你爲什麼不把IFoo和IBar分開注入控制器?這只是一個減少依賴項數量的解決方法嗎?在這種情況下,解決最有可能不遵循SRP的實際問題。 – 2012-01-16 16:43:04