.NET IoC Unity Container Dependency Injection
本文关键字:Dependency Injection Container Unity IoC NET | 更新日期: 2023-09-27 18:32:45
我目前有一个webapi,我正在尝试用它实现依赖注入。在我的webapi中,我有一个与数据库通信的存储库层和一个仅存储所有业务逻辑的服务层。控制器只是一个请求处理程序层。
在 webapi 架构中,我从处理程序(在到达控制器层之前)派生了谁发出了请求。我想使用 DI 和 IoC Unity 将其注入我的存储库。有没有办法做到这一点。也许工厂使用Unity Container。
谢谢。
当我
尝试将OrmLiteConnectionFactory
注入Repository
类时,这就是我实现它的方式:
全球
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//Setup DI
Bootstrapper.Initialise();
// other init
}
}
引导程序.cs
public static class Bootstrapper
{
public static void Initialise()
{
var container = BuildUnityContainer();
GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
}
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
// register all your components with the container here
// e.g. container.RegisterType<ITestService, TestService>();
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
var connectionFactory = new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider);
var connectionFactoryConstructor = new InjectionConstructor(connectionFactory);
container.RegisterType<ConfigManagement.Domain.Core.IParameterValueRepository, ConfigManagement.DAL.Core.ParameterValueRepository>(connectionFactoryConstructor);
return container;
}
}
我的Repository
实现:
public class ParameterValueRepository : IParameterValueRepository
{
private readonly OrmLiteConnectionFactory _dbFactory;
public ParameterValueRepository(OrmLiteConnectionFactory dbFactory)
{
_dbFactory = dbFactory;
}
}
最后是我的Repository
界面:
public interface IParameterValueRepository
{
List<ParameterValue> Get();
}