【发布时间】:2016-04-27 18:04:12
【问题描述】:
使用Autofac,我正在注册 2 个具有类型的实现。并且需要根据需要交换实现。但它总是采用一种实现方式。
public class DataAccesss
{
public IDatabaseHelper { get; set; }
}
Autofac
builder.RegisterType<DatabaseHelper>()
.Named<IDatabaseHelper>("Sql")
.WithParameter(new TypedParameter(IDatabaseHelper), new DatabaseHelper(new SqlFactory))
.PropertiesAutowired();
builder.RegisterType<DatabaseHelper>()
.Named<IDatabaseHelper>("Oledb")
.WithParameter(new TypedParameter(IDatabaseHelper), new DatabaseHelper(new OleDbFactory))
.PropertiesAutowired();
在控制器中,需要有这样的东西
1st - need to access `IDatabaseHelper` with `OleDb`
2nd - need to access `IDatabaseHelper` with `Sql`
但我的问题是IDatabaseHelper 要么是null,要么总是使用OleDb 而不是Sql。
【问题讨论】:
-
按需是什么意思?不同服务的不同实现?
-
使用相同的服务我需要同时访问
OleDbClient和SqlClient -
如果你写成,总是取OleDb,1个接口只取SqlFactory OR OleDbFactory
-
显然是的,但我有一个场景可以一个接一个地使用。
OleDbFactory第 1 次和SqlFactory第 2 次。
标签: c# asp.net-mvc-4 dependency-injection autofac