我有一个身份验证服务,我在我的 Unity Container 中注册,如下所示:
Container.RegisterInstance<IAuthenticationService>(new AuthenticationService());
我的问题是我AuthentificationService
依赖于INavigationService
,它的构造函数将它作为参数:
public AuthenticationService(INavigationService navigationService)
据我了解,Unity Container 负责注入INavigationService
实现。但在这种情况下,我提供了AuthenticationService
实例,那么我如何告诉 UnityINavigationService
在我的AuthentificationService implementation
.
首先,您使用像 unity 这样的 DI Container 来摆脱new
. 因此,如果您被迫这样做,注册实例是最后的手段。
通常,您要注册types,告诉 unity要创建什么,将如何创建给容器。
你应该写
Container.RegisterType<IAuthenticationService, AuthenticationService>( new ContainerControlledLifetimeManager() );
在创建AuthenticationService
实例时,unity 将尝试解析所有构造函数参数,并将 传递INavigationService
给您的AuthenticationService
:
internal class AuthenticationService
{
public AuthenticationService( INavigationService navigationService )
{
// here you've got the Navigation Service...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句