نوشته شده توسط
سعید کشاورز
زمانی که از تزریق وابتسگی توی سازنده کنترلر استفاده میکنیم دیگه نمیتونیم از identity استفاده کنیم.چون کنترلر account که به صورت پیش فرض ساخته میشه توی MVC تزریق وابستگیش از طریق سازنده فرق داره..حالا فرض کنید توی یه کنترلر هم شما نیاز دارید از userManagment استفاده کنید هم تزریق وابستگی لایه های سرویس که این دو تداخل دارند..برای این راه حلی هست؟
درسته ، AccountController خودش پیشفرض 2 تا Dependency در Constructor داره: UserStore و AuthenticationManager که باید بهش تزریق بشن.
تزریق کردن و درست کردن این مشکل هم چند خط بیشتر نیست ، کافیه به IoC Container خودتون بگید از چه کلاس هایی استفاده بشه.
بعوان مثال برای حل این مشکل با Structure Map ، این کد رو داخل Default Registry قرار بدید کافیه و مشکل حل میشه :
For<IUserStore<ApplicationUser>>().Use<UserStore<A pplicationUser>>();
For<IAuthenticationManager>().Use(() => HttpContext.Current.GetOwinContext().Authenticatio n);
For<DbContext>().Use(() => new ApplicationDbContext());
علاوه بر این اگر باز هم Controller های دیگه Dependency های دیگه ای بجز اینها نیاز داشته باشن ، براحتی میتونید با Container تون Configure کنید که چه کلاسی به کنترلر تزریق بشه.