PDA

View Full Version : استفاده از Microsoft Unity Container در C شارپ



Developer Programmer
دوشنبه 24 اسفند 1394, 16:20 عصر
من هرچی بیشتر میخونم، کمتر مفهوم و منطق Unity رو می فهمم!

فرض کنین که دو تا کلاس داریم به نامهای SQL_DAL و Oracle_DAL حال میخوایم از هرکدوم از این کلاس ها داخل برنامه به دلخواه استفاده کنیم !

interface IDAL
{
void show();
}
class OracleDAL : IDAL
{
public void show()
{
Console.WriteLine("Oracle DAL");
}
}
class SQLDAL : IDAL
{
public void show()
{
Console.WriteLine("SQL Server DAL");
}
}
class DAL
{
readonly IDAL _idal;
public DAL(IDAL dal)
{
_idal = dal;
}
public void detail()
{
_idal.show();
}
}

حال میخوام از Unity استفاده کنم.... اونطور که از ebook ها خوندم، همچین کدی مینویسم:

private void Form1_Load(object sender, EventArgs e)
{
using (IUnityContainer container = new UnityContainer())
{
container.RegisterType<DAL>();
container.RegisterType<IDAL, OracleDAL>();
container.RegisterType<IDAL, SQLDAL>();

DAL dal = container.Resolve<DAL>("dal");

dal.detail();
}
}

منتها این کد امکان انتخاب بین SQL_DAL یا Oracle_DAL رو نمیده و همیشه خروجی Oracle رو برمیگردونه !

کسی میدونه کجا رو دارم اشتباه میرم؟:افسرده:

Developer Programmer
چهارشنبه 26 اسفند 1394, 04:25 صبح
کسی از دوستان به Unity Container کار نکرده؟