1
我已经设置了容器这样我有团结与实例解析问题:
var token = new SecurityToken();
token.Token = "Test";
token.Value = "Test";
var passport = new PassportContext();
passport.Permissions = new SecurityPermissions { Add = true, Change = true, Inquiry = true, Delete = true };
_unityContainer = new UnityContainer();
_unityContainer.RegisterInstance<PassportContext>(passport, new ContainerControlledLifetimeManager());
_unityContainer.RegisterInstance<SecurityToken>(token, new ContainerControlledLifetimeManager());
_unityContainer.RegisterType<IWorksheetRepository, WorksheetRepository>();
PassportContext
和SecurityToken
所需的Web服务在存储库中调用以获取数据。
我解决我的WorksheetRepository
这样的:
UnityContainer.Resolve<IWorksheetRepository>();
它实例我WorksheetRepository
:
public sealed class WorksheetRepository : IWorksheetRepository
{
private PassportContext _passportContext;
private SecurityToken _token;
public WorksheetRepository(PassportContext passportContext, SecurityToken token)
{
_passportContext = passportContext;
_token = token;
}
}
现在,我的问题是,在WorksheetRepository
构造,既PassportContext
和SecurityToken
被实例化,但所有属性是它们的默认值,而不是我在我的设置中设置的值。我将它们设置为单身人士,所以当我解决IWorksheetRepository
时,我的单身人士是否应该注入我的WorksheetRepository
实施中?我在这里失去了与统一的东西吗?
有点背景 - 我试图遵循最佳实践。我知道你的大多数应用程序应该不知道你的Unity容器,它应该解决应用程序根目录下的依赖关系。这是我试图遵循的模式,尽管这是一个单元测试。
我无法重现您描述的问题。鉴于你在这里的确切代码,我能够用正确的护照上下文和安全令牌来解析存储库。在RegisterInstance调用后,您是否有注册类型(可能按惯例?)到容器中,可能会覆盖这些注册?你有多个统一容器吗? – TylerOhlsen