आंतरिक असेंबली (कड़ाई से बोलने वाला मॉड्यूल) गोपनीयता है। नामस्थान दृश्यता पर इसका कोई प्रभाव नहीं है।
एक ही विधानसभा के भीतर अन्य वर्गों से एक वर्ग की गोपनीयता प्राप्त करने का एकमात्र तरीका एक वर्ग के लिए एक आंतरिक वर्ग होना है।
इस बिंदु पर यदि वर्ग निजी है तो यह उस वर्ग या बाहरी वर्ग के लिए कुछ भी अदृश्य नहीं है।
यदि संरक्षित है तो यह सभी को दिखाई देता है जो निजी होने पर भी देख सकता है लेकिन बाहरी वर्ग के उप वर्गों को भी दिखाई देता है।
public class Outer
{
private class Hidden { public Hidden() {} }
protected class Shady { public Shady() {} }
public class Promiscuous { public Promiscuous() {} }
}
public class Sub : Outer
{
public Sub():base()
{
var h = new Hidden();
var s = new Shady();
var p = new Promiscuous();
}
}
public class Outsider
{
public Outsider()
{
var h = new Outer.Hidden();
var s = new Outer.Shady()
var p = new Outer.Promiscuous();
}
}
संक्षेप में, जो आप चाहते हैं उसे प्राप्त करने का एकमात्र तरीका बाहरी वर्ग को नामस्थान के रूप में उपयोग करना और उस वर्ग के भीतर प्रतिबंधित करना है।