Ich habe ein Formular, das drei Elemente in einem Kombinationsfeld zeigt. Kontinente, Länder und StädteConstructor Abhängigkeitsinjektion mit Unity als IoC
Wenn ich ein Element z. wenn ich Cities auswähle und dann auf "Get Results" klicke, sende ich einen Select-Befehl über die Business- und Datenschicht an die Datenbank, die dann eine Liste vom Typ Cities abruft.
Die Liste wird dann an das Raster auf dem UI-Formular gebunden.
Die Klassen: Kontinente, Länder und Städte implementieren IEntities-Schnittstelle mit Eigenschaft Zeichenfolge "Name".
Die Schaltfläche Click-Ereignis ruft Business-Schicht mit:
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 wie folgt aussieht:
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
}
}
Ich möchte Unity als das IOC verwenden, um anstelle der Verwendung Fabrik (Art) pattern im Button click event mit if dann elses und mit hartcodierten Klassennamen möchte ich die Container-Konfiguration verwenden, die die relevante Klasseninstanz erzeugt. Und wenn die IEntities-Instanz an den Konstruktor der BL-Klasse übergeben wird, möchte ich das Objekt mit Unity übergeben. Können Sie mir bitte Ratschläge geben?