C# MVC 5 Unity构造函数注入失败/返回Null

C# MVC 5 Unity构造函数注入失败/返回Null,c#,asp.net-mvc-5,unity-container,C#,Asp.net Mvc 5,Unity Container,当我尝试返回销售数据时,下面的代码返回null。如果我为employee删除另一个构造函数,它就会起作用,所以我认为这是一个构造函数注入问题 我该如何注射 存储库:位于单独的项目中 public class CompanyRepository : ICompanyRepository, IDisposable { public CompanyRepository() { } private readonly IEmployeeRepository _emplo

当我尝试返回销售数据时,下面的代码返回null。如果我为employee删除另一个构造函数,它就会起作用,所以我认为这是一个构造函数注入问题

我该如何注射

存储库:位于单独的项目中

public class CompanyRepository : ICompanyRepository, IDisposable
{
    public CompanyRepository()
    {

    }

    private readonly IEmployeeRepository _employeeRepository;
    public CompanyRepository(IEmployeeRepository parameter)
    {
        _employeeRepository = parameter;
    }
    //fails never hits this
    private readonly ISalesRepository _salesRepository;
    public CompanyRepository(ISalesRepository parameter)
    {
        _salesRepository = parameter;
    }

}
MVC 5控制器:

[HttpGet]
public ActionResult Create()
{
    //works
    var a = _CompanyRepository.GetCompanyData();
    //works
    var b = _CompanyRepository.GetEmployeeData();
    //fails
    var c = _CompanyRepository.GetSalesData();

    //return view etc
}
App_Start Unity.Config

public static class UnityConfig
{
    public static void RegisterComponents()
    {
        var container = new UnityContainer();

        // register all your components with the container here
        // it is NOT necessary to register your controllers

        container.RegisterType<ICompanyRepository, CompanyRepository>();
        //this one is failing
        container.RegisterType<ICompanyRepository, CompanyRepository>(new InjectionConstructor(new ResolvedParameter<SalesRepository>()));
        container.RegisterType<ICompanyRepository, CompanyRepository>(new InjectionConstructor(typeof(EmployeeRepository)));


        DependencyResolver.SetResolver(new UnityDependencyResolver(container));

    }
}
公共静态类UnityConfig
{
公共静态无效注册表组件()
{
var container=new UnityContainer();
//在此处向容器注册所有组件
//无需注册控制器
container.RegisterType();
//这一次失败了
RegisterType(新的注入构造函数(新的ResolvedParameter());
RegisterType(新注入构造函数(typeof(EmployeeRepository));
SetResolver(新UnitedDependencyResolver(容器));
}
}
我只是在用,但它也不起作用

container.RegisterType<ICompanyRepository, CompanyRepository>(new InjectionConstructor(typeof(SalesRepository)));
container.RegisterType<ICompanyRepository, CompanyRepository>(new InjectionConstructor(typeof(EmployeeRepository)));
container.RegisterType(新注入构造函数(typeof(SalesRepository));
RegisterType(新注入构造函数(typeof(EmployeeRepository));

您应该命名您的InjectionConstructor注册

container.RegisterType<ICompanyRepository, CompanyRepository>("salesRep", new InjectionConstructor(new ResolvedParameter<SalesRepository>()));

container.RegisterType<ICompanyRepository, CompanyRepository>("employeeRep",new InjectionConstructor(new ResolvedParameter<EmployeeRepository>()));
然后使用DependencyResolver

var salesRep = container.Resolve<ICompanyRepository>( "salesRep" );

var employeeRep = container.Resolve<ICompanyRepository>( "employeeRep" );
public CompanyRepository([Dependency("employeeRep")]IEmployeeRepository parameter)

public CompanyRepository([Dependency("salesRep")]ISalesRepository parameter)