سلام
اولا که هیچ وقت در کد کلاس هات از کد زیر استفاده نکن
System.Web.HttpContext.Current.Response.Write("Sub mit Order ;");
چون این کار هم خوانایی کدهات رو پایین میاره و هم تست پذیری کدها رو با مشکل مواجه میکنه(در مورد تست پذیری همینقدر بگم که با استفاده از اون میتونیم محیط واقعی اجرای برنامه رو شبیه سازی کنیم و برنامه رو بقولی زیر بار ببریم و نتیجه کار رو قبل از تحویل برنامه به مشتری ببینیم)
راستی! چرا از DI می خواهیم استفاده کنیم؟ جواب : توسعه پذیری!
خوب بریم سراغ مثال شما
در این مثال شما درون کلاس Order از کلاس DataClassesDataContext استفاده کرده اید. فرض کنیم شما کلاس DataClassesDataContext رو برای کار با دیتابیس SQL نوشته اید و حالا نیاز شده از کلاس دیگه ای بنام DataClassesDataContextMySQL استفاده کنید که برای کار با MySQL نوشته اید! اونوقت همون بحث قبلی پیش میاد. باید تغییراتی رو در کلاس Order اعمال کنیم تا بتونیم از کلاس DataClassesDataContextMySQL استفاده کنیم!
راه حل چیه؟همون آموزش های بالا!
ابتدا باید وابستگی رو با استفاده از constructor injection از بین ببریم. لذا داریم:
public class Order
{
private DataClassesDataContext _dataClassesDataContext;
public Order(DataClassesDataContext dataClassesDataContext)
{
_dataClassesDataContext = dataClassesDataContext;
}
public void SaveOrder(Product product)
{
_dataClassesDataContext.tbl_products.InsertOnSubmi t(new tbl_product
{
group = product.group,
Name = product.Name,
Price = product.Price
});
_dataClassesDataContext.SubmitChanges();
}
}