سلام دوست عزیز،
توسط BrowsableAttribute تنها می توانید Property/Event مورد نظر را در پنجره ی Properties Window مخفی نمایید و برنامه نویس هنوز می تواند در Code Editor به آن دسترسی داشته باشد(توجه داشته باشید که در مورد برخی اعضای پیاده سازی شده در چارچوب کاری دات نت، Intellisense آن را نمایش نمی دهد و همچنان در صورت دسترسی به آن با خطا مواجه نخواهید شد، این گونه اعضا دز MSDN بدین گونه شرح داده میشوند:
This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.
،
دات نت فریم ورک جهت انجام اینکار(مخفی کردن اعضاء در Intellisense) از EditorBrowsableAttribute استفاده می کند، به طور مثال، کلاس PrintPreviewDialog از کلاس Form به ارث گرفته می شود، اما پروپرتی Text مربوط به آن توسط Intellisense نمایش داده نمی شود چون در کلاس Derived به صورت زیر اعلان شده است:
[Browsable(false)] //[Hiding In Properties Window]
[EditorBrowsable(EditorBrowsableState.Never)] //[Hiding By Intellisense]
public override string Text { get; set; }
شما نمی توانید هنگام ارث بری از کلاس Base، یکی از Public Member های آن را در کلاس Derived مخفی نمایید،(طبق نکات فوق تنها میتوانید آن را در Properties Window و Intellisense مخفی نمایید و همچنان امکان دسترسی به آن وجود دارد) بلکه می توانید پیاده سازی آن را در صورت امکان و آن هم فقط در سطح کلاس Derived تغییر دهید،
برنامه نوس به هر حال می تواند به اعضای Public کلاس Base دسترسی پیدا کند:
//--pseudo code--
//Dervied class is inherited from Base class
Derived child = new Derived();
Base parent = (Base)child;
//Accessing Public Member
parent.PublicProperty;
،/