با سلام و عرض وقت بخیر خدمت دوستان عزیز میخواستم ببینم راهی هست که بتونیم یک کنترلر رو که حاوی یه سری پارمتر در کانستراکتورش هست به کنترلر دیگه اینجکت کنیم؟
من وقتی این کار رو میکنم با این ارور مواجه میشم
InvalidOperationException: Multiple constructors accepting all given argument types have been found in type 'Booking_Web.Controllers.ReservationController'. There should only be one applicable constructor.
ممنون میشم اگه راه حلی دارید کمکم کنید
سلام
که چی بشه ؟
اگه به اکشن خاصی از اون کنترلر نیاز داری که به راحتی redirect کن.
اگه به متد خاصی نیاز داری اون متد رو بیار بیرون از کنترلر و از اونجا صداش بزن.
چه دلیلی داره که کنترلری به عنوان ورودی کنترلر دیگهای باشه؟!
و اینکه این خطا مربوط به تنظیمات IOC هستش که میگه بیش از یک سازنده داره از کنترلر Reservation داره پیدا میکنه که این ورودیها رو میتونه بهش بده!
سلام
این که خب تقریبا کاری 100 در 100 اشتباه است
شما باید بیزینس را در یک سرویس دیگه بنویسی و این سرویس را در کنترلر دومت استفاده کنی
این که میفرمایید متد رو بیارم بیرون کنترلر یعنی توی یه کلاس جدا بزارمش؟
بله
شما یک interface تعریف میکنی که میشه اون قراردادی که بهش در داخل کنترلر نیاز داری.
بعد یه class میسازی که این interface رو پیادهسازی میکنه.
بعد این class رو برای IOC تنظیم میکنی تا هرجا اون interface تزریق شده بود از این class یه شی ایجاد کنه و به مقصد تزریق کنه. و شما هم فقط با همون interface که از اول قرارداد کردی کار میکنی.
این راه درست است.
اما اگه چیزی راجع به IOC و اینها نمیدونی و نمیخوای هم یاد بگیری میتونی از interface صرف نظر کنی و مستقیما class رو داخل کنترلر new و استفاده کنی.
موفق باشی.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)