आपको समझना होगा कि सीएलआर के संदर्भ में, नामस्थान जैसी कोई चीज़ नहीं है। नेमस्पेस पूरी तरह से एक भाषा सुविधा है जो केवल कोड को सरल बनाने के लिए मौजूद है ताकि हमें हमेशा पूरी तरह से योग्य क्लास नाम हमेशा पढ़ना न पड़े। foo और foo.bar -
अपने उदाहरण में,
namespace foo
{
public class bar { ... }
}
namespace foo.bar
{
public class baz : EventArgs { ... }
}
जब इस sourcecode संकलित किया गया है, आईएल नहीं भी पता दो नामस्थान देखते हैं कि है। इसके बजाय यह केवल कक्षा परिभाषाओं के बारे में जानता है। इस मामले में, जब यह कक्षा बार में आता है, तो यह जानता है कि आपके पास foo.bar
क्लास बाज़ में आता है, तो को वर्ग का पूरा नाम foo.bar के रूप में हल करता है। बाज़
लेकिन यदि यह मामला था, तो बाज़ को बार की कक्षा परिभाषा के भीतर सही तरीके से घोषित किया जाना चाहिए था और जैसा कि आपने यहां किया है, एक अलग नामस्थान में नहीं।
व्यावहारिक उदाहरण के बिना, सुझावों को शिक्षित अनुमान बनाना होगा, सभी संभावित आधारों को कवर करना होगा, या एक महान उत्तर होने से कम होना होगा; अंगूठे के नियम से, एक नामस्थान एक श्रेणी है, या सामान्यीकरण, और एक वर्ग एक विशिष्ट उपयोगिता है - नामकरण इसे प्रतिबिंबित करना चाहिए। उदाहरण के लिए 'System.Collections' नामस्थान और कक्षाएं, जैसे 'System.Collections.CollectionBase'। अगर इस नामस्थान में 'संग्रह 'नामक कक्षा के लिए आवश्यकता थी तो कुछ और गलत है। –
यह एक व्यावहारिक उदाहरण कम या कम है। मैं वर्ग 'बार' में 'EventArgs' के आधार पर एक कस्टम प्रकार का उपयोग करना चाहता हूं। क्या मुझे कस्टम नाम को उसी नामस्थान में 'बार' के रूप में रखना चाहिए? – Stijn