具有 MVC 的 IOC 对同一接口进行多次注册
本文关键字:注册 接口 MVC IOC 具有 | 更新日期: 2023-09-27 18:33:54
如何为IOC的某些接口注册多个数据提供程序(我使用Ninject,但你可以回答一般),例如ISettingsRepository
由JsonSettingsProvider
和XmlSettingsProvider
实现。
我正在将我的数据(在本例中为设置)从 XML 迁移到 JSON,并且需要在应用程序中同时使用它们(不是在其中之一之间进行选择,而是在运行时同时选择两者)。所以我需要基于 XML 的提供程序来读取序列化的内容,并使用 JSON 提供程序将其序列化回 JSON。
public class WebSettings
{
[Inject]
private ISettingsRepository _repository;
private void Load()
{
_repository = DependencyResolver.Current
.GetService<ISettingsRepository>();
...
现在我要注册,例如:
kernel.Bind<ISettingsRepository>()
.To<XmlSettingsProvider>()
.InRequestScope();
希望你明白我的意思。
我尝试过,但无法使用工厂做到这一点。
但是你可以在stackoverflow上看看这个线程
Ninject :通过类型 _and_ 注册名称/标识符解析对象
我知道unity(msdn上的链接)支持多个相同类型的命名实例:
public IUnityContainer RegisterInstance(
Type t,
string name,
Object instance,
LifetimeManager lifetime
)
然后,当您解决时,只需传递所需实例的名称。