UnityContainer - 如何注册/解决与依赖关系链接
问题描述:
我有一个MVC应用程序Controller
需要IDomainService
。 DomainService
类构造函数需要一个IRepository
和Repository
类构造函数需要一个连接字符串。UnityContainer - 如何注册/解决与依赖关系链接
我有这样的事情:
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")));
但是,这是行不通的。
我做错了什么?我对存储库注入没有任何问题,但是我无法注入(通过存储库)注入域服务。
谢谢。
答
我通常添加一个小的类此:
public class AppConfigConnectionFactory : IConnectionFactory
{
public IDbConnection Create()
{
return new SqlConnection(ConfigurationManager
.ConnectionStrings["ApplicationServices"].ConnectionString);
}
}
c.RegisterType<IConnectionFactory, AppConfigConnectionFactory>();
c.RegisterType<IDepartmentRepository, DepartmentRepository>();
不要依赖于字符串,如果你不就得了。此外,您还可以通过此解决方案避免每个存储库中的代码重复。
谢谢,这工作像一个魅力。 – Raymond 2011-05-19 16:10:43
我喜欢你的方法。它非常干净。 +1。 – Steven 2011-05-19 18:07:12