Unity Dependency Injectionに問題があります。コンストラクタインジェクションを使用しようとすると、私のインジェクションされたサービスは空のままです。依存性注入 - Unityコンストラクタ注入が機能しない、ゲッタセッタ注入のみ
public UserService(IUnitOfWorkIntranet unitOfWork, IUserRepository userRepository)
{
mappingToDomainModel = IntranetMappingToDomainModel.GetMappingToDomainModelInstance;
IntranetAutoMapperConfiguration autoMapper = IntranetAutoMapperConfiguration.GetAutoMapperConfigurationInstance;
unitOfWorkIntranet = unitOfWork;
userRepository = userRepository;
}
しかし、私がゲッターを使用すると、すべて正常に動作します。
私の知る限りでは、それがUnityConfig.cs で正しく設定されてprivate IUserRepository _userRepository
{
get
{
return GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(IUserRepository)) as UserRepository;
}
}
container.RegisterType<IUnitOfWorkIntranet, UnitOfWorkIntranet>();
container.RegisterType<IUserService, UserService>();
container.RegisterType<IUserRepository, UserRepository>();
私はここで何かが足りないのですか?私のコンストラクタの注射が壊れているのはなぜですか?
助けを歓迎します、よろしく!
を 'UserService'が解決どのように? –
@ Sergey Shushlyapinご回答ありがとうございます!これは、コントローラ内のgetter setter Dependency Injection(Unityを使用)を使用して解決されます。 – InSum
あなたはそれを行うことができますが、それはプロパティインジェクションがオプションと見なされるため、むしろ回避策です。私は、 'IUserRepository'が' UserService'の依存関係であると仮定して、この関係を明確にするためにコンストラクタを介して注入する必要があります。 –