یکی از راهکارهای پیاده سازی IOC یا همان Inversion Of Control در پروژههای MVC استفاده از Unity و معرفی آن به DependencyResolver خود دات نت است. برای آشنایی با Unity و قابلیتهای آن میتوانید به اینجا و اینجا سر بزنید. اما برای استفاده از Unity در پروژههای MVC کافی است در Global یا فایل راه انداز (bootstrapper ) تک تک انتزاعها (Interface) را به کلاسهای مرتبط شان معرفی کنید. var container = new UnityContainer(); cont ...
LightInject در حال حاضر یکی از قدرتمندترین IoC Containerها است که از لحاظ سرعت و کارآیی در بالاترین جایگاه در میان IoC Containerهای موجود قرار دارد. جهت بررسی کارایی IoC Containerها میتوانید به این لینک مراجعه کنید . LightInject یک IoC Container فوق العاده سبک وزن میباشد که تمامی قابلیتهای متداولی که از یک Service Container انتظار میرود را شامل میشود. تنها شامل یک فایل .cs میباشد که تمامی کدهای آن در همین یک فای ...
در بعضی از مواقع ممکن است که در هنگام استفاده از اصل تزریق وابستگیها، با یک مشکل روبرو شویم و آن این است که اگر از کلاسی استفاده میکنیم که به سورس آن دسترسی نداریم، نمیتوانیم برای آن یک Interface تهیه کنیم و اصل (Depend on abstractions, not on concretions) از بین میرود، حال چه باید کرد.
برای اینکه موضوع تزریق وابستگیها (DI) به صورت کامل ...
SimpleIoc به صورت پیش فرض در پروژه های MVVM Light موجود میباشد. قطعه کد پایین به صورت پیش فرض در پروژههای MVVM Lightایجاد میشود.
در کلاس ViewModelLocator ما تمام میانجی(Interface)ها و اشیا(Objects)ی مورد نیازمان را ثبت(register) میکنیم.
در ادامه اجزای مختلف آن را شرح میدهیم.
class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default) ...