द्वारा नेस्टेड क्लास के तत्कालता को रोकने की अनुमति दें, लेकिन मैं कंटेनर क्लास और बाहरी कक्षाओं के लिए सुलभ एक नेस्टेड क्लास को परिभाषित करना चाहता हूं, लेकिन मैं नेस्टेड क्लास के तत्काल नियंत्रण को नियंत्रित करना चाहता हूं, जैसे कि केवल कंटेनर वर्ग के उदाहरण नेस्टेड कक्षा के नए उदाहरण बना सकते हैं।बाहरी कक्षाओं
कार्यवाही कोड उम्मीद है कि इस का प्रदर्शन करना चाहिए:
public class Container
{
public class Nested
{
public Nested() { }
}
public Nested CreateNested()
{
return new Nested(); // Allow
}
}
class External
{
static void Main(string[] args)
{
Container containerObj = new Container();
Container.Nested nestedObj;
nestedObj = new Container.Nested(); // Prevent
nestedObj = containerObj.CreateNested(); // Allow
}
}
Nested
क्रम में सार्वजनिक किया जाना चाहिए यह External
द्वारा सुलभ होने के लिए। मैंने Nested
संरक्षित के लिए कन्स्ट्रक्टर बनाने की कोशिश की, हालांकि Container
उदाहरण बनाने से Container
Nested
का आधार वर्ग नहीं है। मैं Nested
से internal
के लिए कन्स्ट्रक्टर सेट कर सकता हूं, लेकिन मैं उसी बाहरी असेंबली समेत सभी बाहरी वर्गों द्वारा कन्स्ट्रक्टर तक पहुंच को रोकने के लिए देख रहा हूं। क्या इसे करने का कोई तरीका है?
यदि यह एक्सेस संशोधक के माध्यम से हासिल नहीं किया जा सकता है, तो मुझे आश्चर्य है कि क्या मैं Nested()
के भीतर अपवाद फेंक सकता हूं। हालांकि, मुझे नहीं पता कि संदर्भ के लिए परीक्षण कैसे करें जिसमें new Nested()
कहा जाता है।
काम करने लगता है! धन्यवाद! –