मैं सी # में एक नाम स्थान के भीतर सभी कक्षाएं कैसे प्राप्त कर सकता हूं?
मैं सी # में एक नाम स्थान के भीतर सभी कक्षाएं कैसे प्राप्त कर सकता हूं?
जवाबों:
आपको इसे "पीछे" करने की आवश्यकता होगी; एक विधानसभा में सभी प्रकारों को सूचीबद्ध करें और फिर प्रत्येक प्रकार के नामस्थान की जाँच करें:
using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return
assembly.GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToArray();
}
उपयोग का उदाहरण:
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
.Net 2.0 से पहले जहां कुछ भी Assembly.GetExecutingAssembly()
उपलब्ध नहीं है, वहां आपको असेंबली प्राप्त करने के लिए एक छोटे से समाधान की आवश्यकता होगी:
Assembly myAssembly = typeof(<Namespace>.<someClass>).GetTypeInfo().Assembly;
Type[] typelist = GetTypesInNamespace(myAssembly, "<Namespace>");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
आपको थोड़ी और जानकारी देने की आवश्यकता होगी ...
क्या आपका मतलब रिफ्लेक्शन से है। आप एक असेंबली मेनिफेस्ट के माध्यम से पुनरावृति कर सकते हैं और उपयोग करने वाले प्रकारों की एक सूची प्राप्त कर सकते हैं
System.Reflection.Assembly myAssembly = Assembly.LoadFile("");
myAssembly.ManifestModule.FindTypes()
यदि यह केवल विजुअल स्टूडियो में है, तो आप केवल सूची को इंटेलीसेंस विंडो में प्राप्त कर सकते हैं, या ऑब्जेक्ट ब्राउज़र (CTRL + W, J) खोलकर