Developer Programmer
دوشنبه 24 اسفند 1394, 17: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 رو برمیگردونه !
کسی میدونه کجا رو دارم اشتباه میرم؟:افسرده:
فرض کنین که دو تا کلاس داریم به نامهای 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 رو برمیگردونه !
کسی میدونه کجا رو دارم اشتباه میرم؟:افسرده: