سطح دسترسی  Protected Internal در سی شارپ

تیم تحریریه 1403/12/15 0 62
لینک کوتاه https://zoheirsoftware.com/z/bc2ce591e |
سطح دسترسی  Protected Internal در سی شارپ,مزایای سطح دسترسی protected internal ,کاربردهای Protected Internal در سی شارپ

سطح دسترسی  Protected Internal در سی شارپ

در سی‌شارپ، سطح دسترسی protected internal ترکیبی از protected و internal است.

این سطح دسترسی به این معناست که اعضای کلاس فقط در همان اسمبلی (پروژه) یا در کلاس‌های مشتق‌شده (فرزند) قابل دسترسی هستند.

در واقع، اگر یک کلاس خارج از اسمبلی باشد، تنها در صورتی می‌تواند به این اعضا دسترسی داشته باشد که از کلاس اصلی ارث‌بری کرده باشد.

این ویژگی باعث می‌شود تا کلاس‌های مرتبط در یک پروژه، بدون افشای جزئیات به کدهای خارجی، بتوانند از داده‌های مشترک استفاده کنند.

این سطح دسترسی معمولاً در مواقعی استفاده می‌شود که بخواهیم قابلیت ارث‌بری را برای کلاس‌های فرزند فراهم کنیم، اما دسترسی را فقط به محدوده همان اسمبلی محدود کنیم.

به‌عنوان مثال:

public class Parent {
    protected internal void ShowMessage() {
        Console.WriteLine("Accessible within assembly and derived classes.");
    }
}

class Child : Parent {
    public void Display() {
        ShowMessage(); // مجاز است چون کلاس فرزند است
    }
}


در این مثال، متد ShowMessage در همان اسمبلی برای کلاس‌های مشتق‌شده و سایر کلاس‌ها قابل‌دسترسی است، اما از خارج اسمبلی فقط کلاس‌های فرزند می‌توانند از آن استفاده کنند. 

سطح دسترسی  Protected Internal در سی شارپ

 

مزایای سطح دسترسی protected internal 

  • دسترسی ترکیبی

    اعضا در همان اسمبلی و در کلاس‌های مشتق‌شده در اسمبلی‌های دیگر قابل دسترسی هستند.
  • افزایش انعطاف‌پذیری

    اجازه می‌دهد که کلاس‌های فرزند از اعضای محافظت‌شده استفاده کنند، بدون اینکه دسترسی عمومی داده شود.
  •  بهبود کپسوله‌سازی

    از افشای غیرضروری داده‌ها جلوگیری می‌کند و فقط به کلاس‌های مرتبط امکان استفاده می‌دهد.
  • قابلیت استفاده در لایه‌بندی پروژه

    مناسب برای پروژه‌هایی که دارای چندین ماژول هستند و نیاز دارند که کلاس‌های داخلی ارتباط داشته باشند.
  • کنترل بهتر امنیت کد

    باعث می‌شود که فقط کلاس‌های مشخص‌شده در محدوده‌های کنترل‌شده به اعضا دسترسی داشته باشند. 

 

 

مزایای سطح دسترسی protected internal 

ترکیب دو سطح دسترسی

زمانی که از Protected Internal استفاده می‌کنیم، اعضای کلاس برای:

  • کلاس‌های مشتق شده (حتی در اسمبلی‌های مختلف) قابل دسترسی خواهند بود.

  • در داخل همان اسمبلی نیز قابل دسترسی هستند.

این سطح دسترسی به برنامه‌نویسان این امکان را می‌دهد که از اعضای کلاس به‌طور خاص در محیط‌های داخلی (داخل اسمبلی) استفاده کنند و همچنین اجازه دهند که کلاس‌های مشتق شده خارج از اسمبلی نیز به این اعضا دسترسی داشته باشند.

مثال:

using System;

namespace AccessModifiersExample

{

    // کلاس پایه با سطح دسترسی Protected Internal

    public class BaseClass

    {

        // عضو Protected Internal

        protected internal int protectedInternalValue = 100;


        // متد برای نمایش مقدار protectedInternalValue

        public void DisplayValue()

        {

            Console.WriteLine($"Protected Internal Value: {protectedInternalValue}");

        }

    }

    // کلاس مشتق شده از BaseClass

    public class DerivedClass : BaseClass

    {

        // دسترسی به protectedInternalValue از کلاس BaseClass

        public void AccessProtectedInternal()

        {

            Console.WriteLine($"Accessing Protected Internal Value from Derived Class: {protectedInternalValue}");

        }

    }


    class Program

    {

        static void Main(string[] args)

        {

            // ایجاد شیء از کلاس پایه

            BaseClass baseObj = new BaseClass();

            baseObj.DisplayValue(); // دسترسی به protectedInternalValue از طریق متد عمومی در BaseClass


            // ایجاد شیء از کلاس مشتق شده

            DerivedClass derivedObj = new DerivedClass();

            derivedObj.AccessProtectedInternal(); // دسترسی به protectedInternalValue از کلاس مشتق شده

            // از خارج از کلاس (درون اسمبلی) هم می‌توان به protectedInternalValue دسترسی داشت

            // فرض بر این است که همه در همان اسمبلی قرار دارند.

        }

    }

}

در این مثال:

کلاس BaseClass دارای یک عضو با سطح دسترسی Protected Internal به نام protectedInternalValue است.

کلاس DerivedClass که از BaseClass مشتق شده است، می‌تواند به این عضو دسترسی پیدا کند.

درون متد DisplayValue() در BaseClass و متد AccessProtectedInternal() در DerivedClass، به این عضو دسترسی داده شده است.

 

 

 

آیا به دنبال یک فرصت عالی برای یادگیری برنامه‌نویسی هستید؟ 🚀

با دوره آموزشی سی‌شارپ ما، شما می‌توانید مهارت‌های خود را به سطح جدیدی ارتقا دهید! این دوره به‌طور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامه‌نویسی سی‌شارپ پیش بروید.

👨‍🏫 چرا دوره ما را انتخاب کنید؟

  • محتوای جامع و عملی: با پروژه‌های واقعی و تمرینات عملی، یادگیری را به تجربه‌ای جذاب تبدیل کنید.
  • مدرس مجرب: از تجربه و دانش مدرس حرفه‌ای بهره‌مند شوید که شما را در هر مرحله از یادگیری راهنمایی می‌کنند.
  • پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
  • دسترسی مادام‌العمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، می‌توانید به آن مراجعه کنید.

💡 فرصت را از دست ندهید!

بایادگیری سی‌شارپ، می‌توانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژه‌های جذاب و چالش‌برانگیز شرکت کنید.

همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده‌ای روشن‌تر بردارید!

شرکت در دوره آموزش برنامه نویسی سی شارپ

 

 

نکات مهم درباره Protected Internal

  • محدودیت‌ها

    یک نکته مهم این است که دسترسی به اعضای Protected Internal در کلاس‌های غیر مشتق شده خارج از اسمبلی ممکن نیست.
  • ترکیب Protected و Internal

    ترکیب این دو سطح دسترسی باعث می‌شود که اعضای Protected Internal هم برای کلاس‌های مشتق شده از سایر اسمبلی‌ها و هم در داخل همان اسمبلی در دسترس باشند.
  • استفاده در توسعه سیستم‌های پیچیده

    این سطح دسترسی در طراحی سیستم‌هایی که به طور پیچیده و در مقیاس بزرگ استفاده می‌شوند، مفید است.
    مخصوصاً زمانی که نیاز به اشتراک‌گذاری داده‌ها و متدهای کلاس‌های پایه با کلاس‌های مشتق شده از دیگر اسمبلی‌ها داریم.

کاربردهای Protected Internal در سی شارپ

سطح دسترسی Protected Internal در شرایط خاصی کاربرد دارد که نیاز به دسترسی محدود به اعضای یک کلاس هم در داخل اسمبلی و هم در کلاس‌های مشتق شده در خارج از اسمبلی داریم.

این سطح دسترسی به ویژه در موارد زیر مفید است:

  • مدیریت دسترسی در سیستم‌های بزرگ

    زمانی که پروژه‌های بزرگی با چندین اسمبلی داریم و نیاز به مدیریت دقیق دسترسی به داده‌ها و متدها داریم.
  • استفاده در کلاس‌های پایه با قابلیت گسترش

    زمانی که یک کلاس پایه داریم و می‌خواهیم اعضای آن هم در داخل اسمبلی و هم در کلاس‌های مشتق شده از اسمبلی‌های دیگر قابل دسترسی باشد.
  • محافظت از اعضای مهم کلاس‌ها

    با استفاده از Protected Internal می‌توانیم اعضای کلاس‌ها را از دسترسی‌های غیرمجاز محافظت کنیم، در حالی که هنوز به طور خاص در محیط‌های مختلف قابل استفاده باشند.

 

 

کاربردهای Protected Internal در سی شارپ

مثال پروژه محور از  سطح دسترسی  Protected Internal 

موضوع پروژه مدیریت کاربران

در این پروژه، کلاس UserManager به عنوان کلاس پایه است که ویژگی‌های کاربران را مدیریت می‌کند.

کلاس PremiumUserManager از کلاس UserManager ارث‌بری می‌کند و دسترسی به ویژگی‌های خاص کاربران را فراهم می‌کند.

کد کلاس‌های پروژه

using System;

namespace UserManagementSystem

{

    // کلاس پایه که شامل ویژگی‌ها و متدهای مشترک برای کاربران است

    public class UserManager

    {

        // ویژگی Protected Internal که فقط در کلاس‌های مشتق شده و داخل اسمبلی قابل دسترسی است

        protected internal string username;

        protected internal string email;

        // سازنده برای ایجاد یک کاربر

        public UserManager(string username, string email)

        {

            this.username = username;

            this.email = email;

        }


        // متد عمومی برای نمایش اطلاعات کاربر

        public void DisplayUserInfo()

        {

            Console.WriteLine($"Username: {username}, Email: {email}");

        }

    }

    // کلاس مشتق شده برای مدیریت کاربران ویژه

    public class PremiumUserManager : UserManager

    {

        // ویژگی خاص برای کاربران ویژه

        public string premiumFeature;

        // سازنده برای ایجاد یک کاربر ویژه

        public PremiumUserManager(string username, string email, string premiumFeature)

            : base(username, email)

        {

            this.premiumFeature = premiumFeature;

        }

        // متد برای دسترسی به ویژگی‌های ویژه کاربران

        public void DisplayPremiumFeatures()

        {

            // دسترسی به ویژگی protected internal از کلاس پایه

            Console.WriteLine($"Premium Feature for {username}: {premiumFeature}");

        }


        // نمایش اطلاعات کاربر همراه با ویژگی‌های ویژه

        public new void DisplayUserInfo()

        {

            base.DisplayUserInfo();

            Console.WriteLine($"Premium Feature: {premiumFeature}");

        }

    }


    class Program

    {

        static void Main(string[] args)

        {

            // ایجاد یک شیء از کلاس PremiumUserManager (کاربر ویژه)

            PremiumUserManager premiumUser = new PremiumUserManager("JohnDoe", "john@example.com", "Ad-Free Experience");


            // نمایش اطلاعات کاربر ویژه همراه با ویژگی‌های ویژه

            premiumUser.DisplayUserInfo();

            premiumUser.DisplayPremiumFeatures();


            // ایجاد یک شیء از کلاس UserManager (کاربر عادی)

            UserManager regularUser = new UserManager("JaneDoe", "jane@example.com");

            regularUser.DisplayUserInfo();

        }

    }

}

توضیح کد

در این پروژه کلاس UserManager شامل دو ویژگی username و email است که به صورت protected internal تعریف شده‌اند.

این ویژگی‌ها در داخل کلاس‌های مشتق شده (مثل PremiumUserManager) و همچنین در داخل همان اسمبلی قابل دسترسی هستند.

کلاس PremiumUserManager از کلاس UserManager ارث‌بری می‌کند و یک ویژگی جدید به نام premiumFeature اضافه می‌کند.

این ویژگی‌ها تنها در کلاس‌های مشتق شده و در همان اسمبلی قابل دسترسی هستند.

در متد DisplayPremiumFeatures از کلاس PremiumUserManager، دسترسی به ویژگی‌های protected internal کلاس UserManager انجام می‌شود.

نتیجه اجرای برنامه

زمانی که برنامه اجرا می‌شود، اطلاعات کاربران به صورت زیر نمایش داده می‌شود:

Username: JohnDoe, Email: john@example.com

Premium Feature: Ad-Free Experience

Premium Feature for JohnDoe: Ad-Free Experience

Username: JaneDoe, Email: jane@example.com

 

دوره های مرتبط
آموزش برنامه نویسی سی شارپ,آموزش پروژه محور سی شارپ,آموزش مقدماتی تا پیشرفته سی شارپ,طراحی نرم افزار تحت ویندوز

آموزش برنامه نویسی سی شارپ

زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.

999,000 تومان

2.5k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.