Я новичок в структурировании карты и пока удачи.Однако есть одна область, с которой у меня есть небольшая проблема.Это пытается автоматически подключиться с использованием именованных экземпляров и нового синтаксиса .For (). Use ().
Независимо от того, что я делаю, я получаю последний элемент, который я настроил для данного типа, когда я пытаюсь автоматически подключиться для создания нового объекта.Я могу получить правильный элемент, используя именованные экземпляры, без проблем, когда я просто пытаюсь получить этот тип из контейнера.
Для простоты ниже показан объект ObjectFactory, но мой настоящий код использует IContainer.Оба имеют одинаковый результат для меня.
//arrange
var expectedGreen = "Green";
var notExpectedBlue = "Blue";
var greenInstance = new Mock<ITestClass>();
greenInstance.SetupGet(m => m.Data).Returns(expectedGreen);
ObjectFactory.Configure(x => x.For<ITestClass>().Use(greenInstance.Object).Named("Green"));
var blueInstance = new Mock<ITestClass>();
blueInstance.SetupGet(m => m.Data).Returns(notExpectedBlue);
ObjectFactory.Configure(x => x.For<ITestClass>().Use(blueInstance.Object).Named("Blue"));
//act
var actual = ObjectFactory.GetNamedInstance<TestTarget>("Green");
//assert
Assert.AreEqual(expectedGreen, actual.TestClass.Data);
Класс TestTarget имеет конструктор, который принимает ITestClass в качестве параметра.Я ожидаю, что, запросив экземпляр TestTarget, я вернусь к созданному TestTarget, который будет ссылаться на ITestClass с именем «Green».
В конечном счете, моя цель - смоделировать случай, когда у меня есть два объекта.того же типа, который будет доступен в контейнере (например, приложение, работающее с двумя базами данных).Альтернативный подход к решению такого рода проблем также будет хорошим ответом.Тем не менее, я хочу придерживаться 2.5+ методов для этого.