PDA

نسخه کامل مشاهده نسخه کامل : پیاده سازی یک Controller



iranch
11-07-2014, 07:01
درود
ما میدانیم که کلاس Controller از BaseController ارث بردی میکند و خود BaseController رفته اینترفیس IController رو پیاده کرده.چرا یک سره نیامدند اینترفیس Icontroller رو برای کلاس Contorller پیاده کنند. چرا؟

_H2_
14-07-2014, 22:44
سلام
گمان نمکینم جوابش چندان مهم باشد!
طراح به دلایلی تصمیم گرفته کد را در چند شاخه وراثتی بشکند تا در موقع لزوم بتوان از هر عمق وراثتی بطور جداگانه استفاده کرد.

IController یک استاندارد ارتباطی را مشخص میکند.
ControllerBase یک حداقل پیاده سازی ممکن را برای استاندارد مشخص شده فراهم میکند.
Controller یک پیاده سازی در شرایط عادی و پرکاربرد را برای استفاده عموم پیشنهاد و ارائه میدهد.

در سوی دیگر قبلاً یک AsyncController هم وجود داشته که ... ...
ControllerBase فقط شامل حداقل پیاده سازی IController است.
در حالیکه Controller ضمن به ارث بردن توانایی های ControllerBase واسط IAsyncController را هم پیاده سازی میکند.

یعنی ControllerBase فقط تا محدوده IController پیش رفته و Controller تا پیاده سازی کامل سطح IAsyncController و بسیاری از واسط های دیگر مانند IActionFilter,IExceptionFilter,IResultFilter و... جلو رفته
این تفاوت پشتیبانی حداقل و حداکثر است.
موفق باشید.