C# .NET IoC统一容器依赖项注入

C# .NET IoC统一容器依赖项注入,c#,sql,asp.net-web-api,dependency-injection,C#,Sql,Asp.net Web Api,Dependency Injection,我目前有一个webapi,我正试图用它实现依赖注入。在我的webapi中,我有一个与数据库通信的存储库层和一个只存储所有业务逻辑的服务层。控制器只是一个请求处理程序层 在webapi体系结构中,我从处理程序(在到达控制器层之前)派生出谁发出了请求。我想使用DI和IoC Unity将其注入到我的存储库中。我有办法做到这一点吗。也许是使用Unity容器的工厂 谢谢。当我尝试将或mliteConnectionFactory注入存储库时,我就是这样实现它的: Global.asax public cla

我目前有一个webapi,我正试图用它实现依赖注入。在我的webapi中,我有一个与数据库通信的存储库层和一个只存储所有业务逻辑的服务层。控制器只是一个请求处理程序层

在webapi体系结构中,我从处理程序(在到达控制器层之前)派生出谁发出了请求。我想使用DI和IoC Unity将其注入到我的存储库中。我有办法做到这一点吗。也许是使用Unity容器的工厂


谢谢。

当我尝试将
或mliteConnectionFactory
注入
存储库时,我就是这样实现它的:

Global.asax

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        //Setup DI
        Bootstrapper.Initialise();

       // other init
    }
}
Bootstrapper.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;
    }
}
最后是我的
存储库
界面:

public interface IParameterValueRepository
{
    List<ParameterValue> Get();
}
公共接口IPParameterValueRepository
{
List Get();
}
public interface IParameterValueRepository
{
    List<ParameterValue> Get();
}