PDA

View Full Version : مشکل هنگام ارث بری از یک کنترل



manitack
سه شنبه 08 آبان 1386, 14:13 عصر
سلام دوستان

هنگام ارث بری از یک کنترل:

cannot derive from sealed type

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

hassan razavi
سه شنبه 08 آبان 1386, 14:30 عصر
چون کلاس مورد نظر شما بصورت Sealed تعریف شده نمی توان انرا به ارث برد.
کلاسهای Seal نمی تونند Base Class باشند.

manitack
سه شنبه 08 آبان 1386, 16:12 عصر
چون کلاس مورد نظر شما بصورت Sealed تعریف شده نمی توان انرا به ارث برد.
کلاسهای Seal نمی تونند Base Class باشند.

یعنی هیچ راهی برای سفارشی کردن این کنترل نیست؟

hassan razavi
سه شنبه 08 آبان 1386, 16:58 عصر
من تا حالا نشنیدم و خودم هم پیش نیومده که دنبالش باشم. از اساتید عزیز اگه اطلاعاتی دارند ممنون میشیم که در اختیار بگذارند. مهم یه جستجویی میکنم. چیزی یافتم ، خبرتون میکنم

mehdi.mousavi
سه شنبه 08 آبان 1386, 19:55 عصر
یعنی هیچ راهی برای سفارشی کردن این کنترل نیست؟


خیر. Lock & Seal در انگلیسی به معنای مهر و موم شده هستش. وقتی کلاسی Sealed میشه، یعنی کلاسهای دیگه نمیتونن اونو Extend کنن. اگر به msdn مراجعه کنید، متوجه میشید که فقط کلاسهایی رو باید Seal کرد که یکی از شرایط ذیل رو داشته باشن:

1. کلاس static باشه.
2. کلاس دارای اعضای محافظت شده به ارث برده باشه که حاوی اطلاعات حساس امنیتی هستش.
3. کلاس تعداد زیادی عضو virtual رو به ارث برده باشه و هزینه توسعه و آزمایش مهر و موم نمودن دونه دونه member ها، پر هزینه تر از مهر و موم کردن کل کلاس باشه.
4. کلاس، attribute ای باشه که نیاز به جستجوی سریع با استفاده از reflection داشته باشه. مهر و موم کردن همچین کلاسی باعث افزایش کارایی reflection هنگام بازیابی attribute ها میشه.

تو چنین شرایطی کلاس رو sealed تعریف میکنن.