مبتدی: DI و کانستراکتور در ASP.NET Core 2

ساخت وبلاگ
سلام دوستان.
من درمورد DI جست و جو کردم و همه جا نوشته بودن که برای ماژولار شدن و از بین بردن وابستگی بین کلاس هاست ولی من هرجور میبینم کلاسهای من وایسته تر دارن میشن.
من یک DbContext دارم که به این صورت هست :
publicBlogDbContext(DbContextOptions<BlogDbContext> options)
: base(options){}

حالا توی کنترلر میخوام استفاده کنم مشکلی نداره ولی مشکل اینجا پیش میاد که میخوام یک کلاس دیگه (Logic) داشته باشم که توابعم رو اونجا داشته باشم و توی کنترلرها صدا بزنم، مثال میزنم :
من همیشه برای لاگ گرفتن کارها توی سایت یه جدول دارم با عنوان لاگ و یه کلاس تو پوشه ی لاجیک به اسم ActivityLogger.cs توی این یک تابع دارم که دیتا اینسرت میکنه تو جدول لاگها، بعد توی کنترلر ها وقتی میخوام کاری انجام بدم از بلاک Try-Catch استفاده میکنم و توی Catch تابع اسنرتی که توی ActivityLogger بود رو صدا میزنم تا خطا رو ثبت کنه.
حالا برای اینکار مثل همیشه (که تو وب فرم کار میکردم) کدهای کلاس ActivityLogger.cs رو میخوام بنویسم، این کلاس کانستراکتور داره که ورودیش DbContext هست و IHttpContextAccessor برای بدست آوردن کانتکس و از اون نام کاربری کاربر لاگین هست :
privatereadonlyBlogDbContext db; private readonly IHttpContextAccessor context;
public ActivityLogger(IHttpContextAccessor _context,BlogDbContext _db)
{
context = _context;
db = _db;

}

حالا وقتی میخوام از این تابع استفاده کنم خوب باید یه اینستنس از ActivityLogger.cs دزست کنم و بخاطر کانستراکتور باید ورودی هم بهش بدم (این که وابستگیش بیشتر شد، قبلا تو خود کلاس از دی بی کانتکس یه نمونه درست میکردم و همه کارها رو میکردم دیگه لازم نبود بهش پاس بدم) حالا اگر بخوام توی خود کلاس ActivityLogger.cs یه اسنستنس از DbContext بسازم نمیشه و خطا میده :

کد HTML:

There is no argument given that corresponds to the required formal parameter 'options' of 'BlogDbContext.BlogDbContext(DbContextOptions)
با این وضعیت که من دارم میبینم DI و کانستراکتور کار منو سخت تر کردن که، از طرفی من دارم همه ش dbContext رو پاس میدم بهشون شما فکن دو سه تا کلاس پشت هم باشه این نمونه از DbContext تا دو سه تا کلاس همینطوری جلو میره.
میشه یکی بهم توضیح بده اصلا این جریانش چیه؟ کجا رو دارم اشتباه میکنم؟ برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید

برچسب : کانستراکتور, نویسنده : محمد رضا جوادیان programers بازدید : 177 تاريخ : شنبه 29 مهر 1396 ساعت: 5:18