Mar*_*rco 6 c# asp.net-mvc unity-container repository-pattern
我正在学习如何在asp.net MVC 5项目中使用Unity Framework for Dependency Injection.
一般来说,我会为我的存储库设置映射,如下所示:
public static void RegisterComponents()
{
var container = new UnityContainer();
// e.g. container.RegisterType<ITestService, TestService>();
container.RegisterType<IModelRepository, ModelRepository>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用通用存储库执行此操作,如下所示:
public class GenericRepository<TEntity>
: IGenericRepository<TEntity> where TEntity : class
{ /* ... */ }
Run Code Online (Sandbox Code Playgroud)
出于本能,我会设置并注册这样:
container.RegisterType<IGenericRepository<TEntity>, GenericRepository<TEntity>>();
Run Code Online (Sandbox Code Playgroud)
这不起作用.
我是否需要为每种模型类型注册一个通用存储库?
container.RegisterType<IGenericRepository<Model1>, GenericRepository<Model1>>();
container.RegisterType<IGenericRepository<Model2>, GenericRepository<Model2>>();
container.RegisterType<IGenericRepository<Model3>, GenericRepository<Model3>>();
...
container.RegisterType<IGenericRepository<Model_N>, GenericRepository<Model_N>>();
Run Code Online (Sandbox Code Playgroud)
或者有没有办法为所有模型类和控制器注入一次此存储库?
Dan*_*.G. 10
您可以通过以下方式为任何TEntity注册泛型类型:
container.RegisterType(typeof(IGenericRepository<>), typeof(GenericRepository<>));
Run Code Online (Sandbox Code Playgroud)
请参阅Unity 2.1或Unity 3上的msdn (注册Open Generics部分)
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |