【发布时间】:2017-03-07 07:33:06
【问题描述】:
我遇到了 Unity 依赖注入的问题。当我尝试使用构造函数注入时,我注入的服务保持为空/空。
public UserService(IUnitOfWorkIntranet unitOfWork, IUserRepository userRepository)
{
mappingToDomainModel = IntranetMappingToDomainModel.GetMappingToDomainModelInstance;
IntranetAutoMapperConfiguration autoMapper = IntranetAutoMapperConfiguration.GetAutoMapperConfigurationInstance;
unitOfWorkIntranet = unitOfWork;
userRepository = userRepository;
}
但是,当我使用吸气剂时,一切正常。
private IUserRepository _userRepository
{
get
{
return GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(IUserRepository)) as UserRepository;
}
}
据我所知,它在 UnityConfig.cs 中已正确配置
container.RegisterType<IUnitOfWorkIntranet, UnitOfWorkIntranet>();
container.RegisterType<IUserService, UserService>();
container.RegisterType<IUserRepository, UserRepository>();
我在这里遗漏了什么吗?为什么我的构造函数注入被破坏了?
欢迎任何帮助,问候!
【问题讨论】:
-
UserService是如何解决的? -
@Sergey Shushlyapin 感谢您的回复!它可以在控制器中使用 getter setter 依赖注入(使用 Unity)解决。
-
您可以这样做,但这是一种解决方法,因为属性注入被认为是可选的。我认为
IUserRepository是UserService的必须拥有 依赖项,因此应该通过构造函数注入它以明确这种关系。 -
是的,但问题是构造函数注入不起作用。该对象只是保持为空。
-
“空”是什么意思?显示填充
UserService代码。
标签: asp.net-mvc service dependency-injection repository unity-container