خرید بک لینک

من هرچی بیشتر میخونم، کمتر مفهوم و منطق 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 رو برمیگردونه !

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

برچسب: نویسنده: محمد رضا جوادیان تاريخ: سه شنبه 25 اسفند 1394 ساعت: 3:15

صفحه بندی