PDA

View Full Version : نحوه تعریف دسترسی کلاسها



Mrs.Net
پنج شنبه 15 شهریور 1386, 18:28 عصر
من دوتا namespace دارم . تو اولی چندتا کلاس هست که همه کلاسها از یک کلاس ارث میبرند. تو دومی میخوام که به همه کلاسهای اولی بجز کلاسی که ارث برده میشه دسترسی داشته باشه.
حالا این کلاسی که ارث برده میشه با چه دسترسی تعریف کنم که این قابلیت داشته باشه؟

BeyondMicrosoft
پنج شنبه 15 شهریور 1386, 21:02 عصر
به طور کلی 5 نوع سطح دسترسی در C# وجود دارد :
1-public
2-protected
3-internal
4-protected internal
5-private
سطح دسترسی publicبه صورتی است که تمام قسمتها کد برنامه به این کلاس یا نوع دسترسی دارند (دسترسی محرمانه نیست)
سطح دسترسی protectedبدین معناست که فقط خود کلاس یا نوع ها شامل protectedو کلاس و نوع هایی که از آن کلاس یا نوع که شامل عضو protectedهستند به ارث برده باشند قابل دسترسیند.
سطح دسترسی internal فقط در محدوده همان اسمبلی قابل دسترسیند.
سطح دسترسی protected internalمخلوطی از protected و internalاست.
سطح دسترسی privateکه این نوع فقط در محدوده همان نوع قابل دسترسیست.

Mrs.Net
پنج شنبه 15 شهریور 1386, 22:52 عصر
کلاس که از نو Private تعریف نمیشه!

Mrs.Net
جمعه 16 شهریور 1386, 00:01 صبح
امتحان کردم که میگم!!!

Error 1 Namespace elements cannot be explicitly declared as private, protected, or protected internal \

میشه کد بگذارید؟

Mrs.Net
جمعه 16 شهریور 1386, 09:40 صبح
حداقل اگه همچین حالتی نمیشه بهم بگید
البته اگر مطمئن شدید

Mrs.Net
جمعه 16 شهریور 1386, 22:38 عصر
اما اگر هر کدام از namespace ها در یک asembley جداگانه قرار دارند میتوان چنین کاری را انجام داد.
خوب راه حلش چیه؟

PC2st
شنبه 17 شهریور 1386, 00:18 صبح
تو اولی چندتا کلاس هست که همه کلاسها از یک کلاس ارث میبرند. تو دومی میخوام که به همه کلاسهای اولی بجز کلاسی که ارث برده میشه دسترسی داشته باشه.
الان که دقت کردم فهمیدم منظور چه بوده است! من فکر میکردم که میخواید کلاسهای به ارث برنده رو دسترسی نداشته باشید ولی مثل اینکه بر عکس است و میخواید که به کلاسهای به ارث برده دسترسی نداشته باشید. متاسفانه کلمه "برده" رو بصورت "برنده" (با حرف اضافی ن) در ذهن خودم تصور (توهم (!)) کرده بودم.
از این لحاظ شدیدا عذر میخوام :ناراحت: به همین خاطر پست قبلی ام رو باید پاک کنم.
چون کلاس فرزند نمیتواند سطح دسترسی ای بیش از کلاس پدر را داشته باشد و در واقع نمیشود چنین کاری را انجام داد (همانطور که میدانید، بر عکس این عمل رو میشه انجام داد).