我有一个Controller
的MVC应用,需要IDomainService
。
DomainService
类构造函数采用IRepository
并且Repository
类构造函数需要连接字符串。
我有这样的事情:
string connectionString = ConfigurationManager
.ConnectionStrings["ApplicationServices"].ConnectionString;
c.RegisterInstance("ConnectionString", connectionString);
c.RegisterType<IDepartmentRepository, DepartmentRepository>(
"DepartmentRepository",
new InjectionConstructor(connectionString));
c.RegisterType<IDepartmentDomainService, DepartmentService>(
new InjectionConstructor(
new ResolvedParameter<IDepartmentRepository>(
"DepartmentRepository")));
然而,这不起作用。
我做错了吗?我对存储库注入没有任何问题,但我无法注入(使用存储库)我的域服务。
感谢。
答案 0 :(得分:6)
我通常会为此添加一个小类:
public class AppConfigConnectionFactory : IConnectionFactory
{
public IDbConnection Create()
{
return new SqlConnection(ConfigurationManager
.ConnectionStrings["ApplicationServices"].ConnectionString);
}
}
c.RegisterType<IConnectionFactory, AppConfigConnectionFactory>();
c.RegisterType<IDepartmentRepository, DepartmentRepository>();
如果不需要,请不要依赖字符串。而且,您还可以使用此解决方案避免每个存储库中的代码重复。