我有一个 MVC 应用程序,它具有采用 IDomainService
的 Controller
。
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")));
但是,这不起作用。
我做错了什么吗?我对存储库注入(inject)没问题,但我无法让我的域服务(通过存储库)注入(inject)工作。
谢谢。
最佳答案
我通常为此添加一个小类:
public class AppConfigConnectionFactory : IConnectionFactory
{
public IDbConnection Create()
{
return new SqlConnection(ConfigurationManager
.ConnectionStrings["ApplicationServices"].ConnectionString);
}
}
c.RegisterType<IConnectionFactory, AppConfigConnectionFactory>();
c.RegisterType<IDepartmentRepository, DepartmentRepository>();
如果不需要,请不要依赖字符串。您还将使用此解决方案避免每个存储库中的一些代码重复。
关于c# - UnityContainer - 如何使用依赖链注册/解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052461/