C# MVC 5 Unity构造函数注入失败/返回Null
当我尝试返回销售数据时,下面的代码返回null。如果我为employee删除另一个构造函数,它就会起作用,所以我认为这是一个构造函数注入问题 我该如何注射 存储库:位于单独的项目中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
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)