partial class چیست ؟

مفهموم partial class چیست ؟

این مفهموم از زمان وارد شدن .net 2  به بعد مطرح شد به این ترتیب که شما در یک فضای نام یکسان  namespace   می توانید اطلاعات کلاستتون را در دو یا بیشتر از دو فایل جداگانه قرار دهید . مشروط بر اینکه فضای نام  namespaceهمه فایلها  یکسان باشد . به مثال زیر دقت کنید . کلاسی داریم به نام myclass  که می خواهیم آن را در 2 فایل تقسیم کنیم فایل اول به نام someclass و فایل دوم به نام moreclass   است .

خوب همانطور که گفتم باید حتما فضای نام namespace  هر دو فایل یکسان باشد حالا محتویات هر دو فایل را در زیر می آوریم

فایل someclass                                                                                                                                                                                   

Namespace  space1{

public partial class myClass
{
   public int P1 { get; set; }
}

}

فایل  moreclass

Namespace  space1{

public partial class myClass
{
   public int P2 { get; set; }

public void ala()

{

//دستورات متد

}


}

}

همانطور که مشاهده می کنید بخشی از کد های کلاس myClass در یک جا و ادامه کدها در قسمت دیگری آمده است. از این ویژگی می توان برای گسترش کلاس ها استفاده کرد اما هر دو در یک فضای نام namespace  قرار گرفته اند .

اما حالا که با این مفهوم آشنا شدیم سوال اساسی این است که فایده این روش در کجاست و چرا استفاده می کنیم ؟

1-      افزایش خوانایی در کلاس های بسیار زیادی است

2-      اگر شما بر روی کلاس پیچیده ای کار می کنید براحتی می توانید آن را بین چند نفر تقسیم کنید و هر کدام از افراد در فایلی جداگانه ، کدهای کلاس خود را می نویسد .

3-      شما براحتی می توانید در جاهایی که برخی کدهای بصورت اتوماتیک تولید می شوند ،مثل کد فرمهای تحت ویندوز (Windows Forms, Web Service) ، را از کدهایی که شما بصورت دستی می نویسید را تفکیک کنید . در نتیجه  اعمال تغییرات بسیار راحتتر می شود

4-      در تعریف کلاسها می توانیم بخش از کلاس ما که دارای خصوصیات private   را از بخش که دارای خصوصیات public  باشه را تفکیک می کنیم این کار به خوانایی و روان فهمیدن کلاس کمک فراوانی می کند.

5-      در تعریف interface ها شما می توانید تعریف  interface  را در یک فایل و رابطه ها و اعمال و پیاده سازیهای آن را در فایلی دیگر قرار دهید .