Итак, у меня есть контейнер, в который я добавляю реестр, который определяет тип по умолчанию для класса.Как настроить регистрацию переопределения в Structuremap 4.4
TestRegistry : Registry{
For<Foo>.Use<Foo>();
}
этот реестр добавляется в начале веб-службы во время инициализации приложения. сразу после добавления всех моих реестров, используемых для приложения, мне нужно переопределить регистрацию класса Foo
. Итак:
Container.Instance.Configure(x =>
{
x.AddRegistry<TestRegistry>();
var fooInstance = new Foo();
x.For<Foo>.Use(fooInstance);
}
Когда я иду, чтобы получить этот экземпляр из моего контейнера
var fromContainer = Container.Instance.GetInstance<Foo>();
я теперь получаю обратно null
. если я использую все экземпляры:
var fromContainer = Container.Instance.GetAllInstances<Foo>();
Я верну два результата. Один для каждой регистрации. Это имеет смысл.
Однако, если я пытаюсь очистить регистрации во второй регистрации:
Container.Instance.Configure(x =>
{
x.AddRegistry<TestRegistry>();
var fooInstance = new Foo();
x.For<Foo>.ClearAll().Use(fooInstance);
}
var fromContainer = Container.Instance.GetInstance<Foo>();
Это все равно возвращается null
. Кажется, у меня что-то не хватает. Я ожидаю, что это очистит все регистрации Foo
и воспользуется экземпляром, который я зарегистрировал последним.
Любая помощь будет оценена по достоинству. Заранее спасибо!