كيف تقييد الوصول إلى ملكية من الدرجة فقط لداخل نفس مساحة الاسم

StackOverflow https://stackoverflow.com/questions/1613965

  •  06-07-2019
  •  | 
  •  

سؤال

وكيف تقييد الوصول إلى خاصية فئة إلى داخل نفس مساحة الاسم؟ النظر في الطبقة التالية. فئة المحتوى لا يمكن نشر نفسها، بدلا من الطبقة ContentService والقيام ببعض الامور قبل تغيير الدولة لنشرها.

public class Content : Entity, IContent
    {
        public string Introduction { get; set; }

        public string Body { get; set; }

        public IList<Comment> Comments { get; set; }

        public IList<Image> Images { get; private set; }

        public State Status { get; } 
    }

public class ContentService
    {
        public IContent Publish(IContent article)
        {
            //Perform some biz rules before publishing   
            article.Status = State.Published;
            return article;
        }
    }

وكيف يمكنني جعله ذلك فقط الطبقة ContentService يمكن أن تتغير حالة المادة؟

هل هناك أي أنماط deisng لمساعدتي في التعامل مع هذا؟

هل كانت مفيدة؟

المحلول

ويمكنك استخدام "الداخلي" وصول معدل بحيث الطبقات الوحيدة داخل الجمعية نفسها يمكن تعديل دولة عضو الطبقة المحتوى (ولكن الجميع حتى في المجالس الأخرى يمكن الحصول على قيمة).

public State Status { get; internal set; } 

وحتى الآن ContentService يمكن أن يحدد الدولة لأنه في الجمعية نفسها، ولكن المتصلين الخارجي يمكن فقط الحصول على دولة (انهم لا يسمح للتعيين).

نصائح أخرى

وجافا مفهوم "حزمة المرئية" أو "مجموعة خاصة". هذا هو في الواقع الافتراضي من أجل أي شيء حيث لم تقم بتحديد وضوح (private أو public). لسبب ما، لا أحد تقريبا يستخدم أي وقت مضى هذا.

وتعلن ContentService باعتباره ؟

وبدلا من ذلك، جافا لديه وصول معدل أن يرقى إلى "حزمة والخاص".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top