У меня есть форма, которая показывает три элемента в комбинированном поле. Континенты, страны и городаИнъекция зависимостей конструктора с использованием Unity as IoC
Если я выбираю элемент, например. если я выберу Города, а затем, если я нажму кнопку «Получить результаты», я отправлю команду выбора в базу данных через бизнес и слой данных, который затем извлекает список типов городов.
Список затем привязан к сетке в форме пользовательского интерфейса.
Классы: континенты, страны и города реализуют интерфейс IEntities со строкой свойств «Имя».
Кнопка нажмите событие вызывает Бизнес слой с помощью:
click(object sender, EventArgs e)
{
string selectedItem = comboBox.SelectedItem;
IEntities entity = null;
List<IEntities> list = null;
if (selectedItem == "Cities")
{
entity = new Cities("City");
}
if (selectedItem == "Continents")
{
entity = new Continents("Continents");
}
if (selectedItem == "Countries")
{
entity = new Countries("Countries");
}
//Then I call a method in Business Layer to return list
BL bl = new BL(entity);
list = bl.GetItems();
myDataGrid.DataContext = list;//to bind grid to the list
}
Business Layer выглядит следующим образом:
public class BL
{
public IEntities _entity;
//constructor sets the variable
public BL(IEntity entity)
{
_entity = entity;
}
public IList<Entities> GetItems()
{
//call a method in data layer that communicates to the database
DL dl = new DL();
return dl.CreateItemsFromDatabase(_entity.Name);//name decides which method to call
}
}
Я хочу использовать Unity, как МОК, так вместо того, чтобы использовать завод (вроде) шаблон в событии нажатия кнопки с if then elses и с использованием имен жестких классов, я хочу использовать конфигурацию контейнера, которая создает соответствующий экземпляр класса. И когда экземпляр IEntities передается конструктору класса BL, я хочу передать объект с помощью Unity. Можете ли вы посоветовать, как это сделать?