c# - Is there an access modifier combination or pattern limiting to the class and its containing class? -
हमें सार्वजनिक
, निजी
, सुरक्षित < / कोड>,
आंतरिक
, और संरक्षित आंतरिक
नेस्टेड क्लास लिखते समय, मुझे अपने आप को एक जादू संशोधक संयोजन (अप्रत्याशित) या कोडन पैटर्न जो कि मुझे private
या संरक्षित
देता है, लेकिन जहां युक्त वर्ग का उपयोग भी हो क्या ऐसा कोई चीज है?
उदाहरण - वर्ग या इसके कंटेनर वर्ग में केवल एक सार्वजनिक संपत्ति सेट कर सकते हैं:
सार्वजनिक वर्ग ContainingClass {सार्वजनिक वर्ग NestedClass {public int फू {प्राप्त; जादू_गोइस_यहाँ सेट; }} शून्य कुछ विधि () {NestedClass अनुमति = नया NestedClass (); अनुमति दें। फू = 42; // & lt; == इसे अनुमति दें, उस वर्ग में}} सार्वजनिक वर्ग असंबंधित {शून्य अन्य विधि () {NestedClass अस्वीकार करें = नया ContainingClass.NestedClass (); अस्वीकार करें। फू = 42; // & lt; == इसे किसी दूसरे वर्ग में न करें}}
क्या ऐसा करने का कोई तरीका है? फिर से, शायद एक अभिगम संशोधक के साथ सचमुच नहीं, जब तक कि ऊपर वर्णित पृष्ठ पर कोई जादू संयोजन न रहा हो, लेकिन कुछ पॅटिन मैं इसे वास्तविकता में नहीं प्राप्त करने के लिए उपयोग कर सकता हूं?
सार्वजनिक इंटरफ़ेस IFooable {int Foo {get; }} सार्वजनिक वर्ग ContainingClass {निजी वर्ग NestedClass: IFooable {सार्वजनिक int Foo {get; सेट; }} सार्वजनिक स्थिर IFooable CreateFooable () {NestedClass nc = नया NestedClass (); Nc.Foo = 42; वापसी एनसी; } शून्य कुछ विधि () {NestedClass एनसी = नया नेस्टेड क्लास (); Nc.Foo = 67; // & lt; == इसे अनुमति दें, जिसमें वर्ग में}} सार्वजनिक वर्ग असंबंधित {सार्वजनिक शून्य अन्य विधि () {IFooable nc = ContainingClass.CreateFooable (); Console.WriteLine (nc.Foo); Nc.Foo = 42; // अब यह एक त्रुटि है: P}}
Comments
Post a Comment