مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

اینجکت کردن یک کنترلر به کنترلر دیگر

چهارشنبه, 01 خرداد 1398 13:48

اینجکت کردن یک کنترلر به کنترلر دیگر

با سلام و عرض وقت بخیر خدمت دوستان عزیز میخواستم ببینم راهی هست که بتونیم یک کنترلر رو که حاوی یه سری پارمتر در کانستراکتورش هست به کنترلر دیگه اینجکت کنیم؟

من وقتی این کار رو میکنم با این ارور مواجه میشم 

InvalidOperationException: Multiple constructors accepting all given argument types have been found in type 'Booking_Web.Controllers.ReservationController'. There should only be one applicable constructor.

 

ممنون میشم اگه راه حلی دارید کمکم کنید 

چهارشنبه, 01 خرداد 1398 15:09

سلام

که چی بشه ؟

اگه به اکشن خاصی از اون کنترلر نیاز داری که به راحتی redirect کن.

اگه به متد خاصی نیاز داری اون متد رو بیار بیرون از کنترلر و از اونجا صداش بزن.

چه دلیلی داره که کنترلری به عنوان ورودی کنترلر دیگه‌ای باشه؟!

و اینکه این خطا مربوط به تنظیمات IOC هستش که میگه بیش از یک سازنده داره از کنترلر Reservation داره پیدا میکنه که این ورودی‌ها رو میتونه بهش بده!

کسانی که از این پست تشکر کرده اند : ghaneiman,
شنبه, 04 خرداد 1398 08:47

سلام

این که خب تقریبا کاری 100 در 100 اشتباه است

شما باید بیزینس را در یک سرویس دیگه بنویسی و این سرویس را در کنترلر دومت استفاده کنی

شنبه, 11 خرداد 1398 14:05

این که میفرمایید متد رو بیارم بیرون کنترلر یعنی توی یه کلاس جدا بزارمش؟

یکشنبه, 12 خرداد 1398 08:50

بله

شما یک interface تعریف میکنی که میشه اون قراردادی که بهش در داخل کنترلر نیاز داری.

بعد یه class میسازی که این interface رو پیاده‌سازی می‌کنه.

بعد این class رو برای IOC تنظیم می‌کنی تا هرجا اون interface تزریق شده بود از این class یه شی ایجاد کنه و به مقصد تزریق کنه. و شما هم فقط با همون interface که از اول قرارداد کردی کار می‌کنی.

این راه درست است.

اما اگه چیزی راجع به IOC و اینها نمیدونی و نمی‌خوای هم یاد بگیری میتونی از interface صرف نظر کنی و مستقیما class رو داخل کنترلر new و استفاده کنی.

موفق باشی.

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید