我有一些提供者,比如说 -
<Providers>
<Provider Type="Providers.IM" Name="Im"/>
<Provider Type="Providers.Web" Name="Web"/>
...
</Provider>
这些提供商中的每一个都可以给我一个会话:
<Sessions>
<Session Name="GoogleIM" Provider="Im" URL="..." />
<Session Name="YahooIM" Provider="Im" URL="..." />
<Session Name="YahooWeb" Provider="Web" URL="..." />
...
</Session>
目前,我通过查看提供程序,实例化类型和注入URL(手动)来实例化“命名”会话。
我可以使用会话工厂,这可能需要了解网址并返回正确的会话。
有没有办法用ninject / autofac更优雅/简单地处理这个?
答案 0 :(得分:2)
我可能无法正确理解您的设置,但我相信您可以轻松地使用Ninject处理此类操作。您可能希望创建一个基本接口,并让所有对象实现该接口。您的Ninject绑定将使用Context来确定要加载哪个类来代替您的接口类型。我在这里使用Ninject的上下文绑定编写了一个简短的教程:http://frickinsweet.com/ryanlanciaux.com/post/Real-Ultimate-Power--Dependency-Injection-with-Ninject.aspx