वर्तमान टाइप के भीतर नेस्टेड टाइप्स प्राप्त करने के लिए Type.GetNestedTypes() मेथड का उपयोग करें।
सिंटैक्स
public Type[] GetNestedTypes();
public Type[] GetNestedTypes(BindingFlags bindingAttr);
उदाहरण 1: पब्लिक नेस्टेड टाइप्स (डिफ़ॉल्ट)
using System;
public class Demo {
public static void Main() {
Type type1 = typeof(Subject);
try {
Type[] type2 = type1.GetNestedTypes();
Console.WriteLine("Nested Types...");
for (int i = 0; i < type2.Length; i++) {
Console.WriteLine(" {0} ", type2[i]);
}
}
catch (ArgumentNullException e) {
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
public class Subject {
public class BasicSubject { }
public class AdvSubject { }
}
आउटपुट
Nested Types...
Subject+BasicSubject
Subject+AdvSubject
उदाहरण 2: BindingFlags के साथ
using System;
using System.Reflection;
public class Demo {
public static void Main() {
Type type1 = typeof(Subject);
try {
// केवल पब्लिक इंस्टेंस नेस्टेड टाइप्स
Type[] type2 = type1.GetNestedTypes(BindingFlags.Public);
Console.WriteLine("Nested Types...");
for (int i = 0; i < type2.Length; i++) {
Console.WriteLine(" {0} ", type2[i]);
}
}
catch (ArgumentNullException e) {
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
public class Subject {
public class BasicSubject { }
public class AdvSubject { }
}
आउटपुट
Nested Types...
Subject+BasicSubject
Subject+AdvSubject
BindingFlags विकल्प
| फ्लैग | विवरण |
|---|---|
BindingFlags.Public | पब्लिक नेस्टेड टाइप्स शामिल करें |
BindingFlags.NonPublic | नॉन-पब्लिक (प्राइवेट, प्रोटेक्टेड) नेस्टेड टाइप्स शामिल करें |
BindingFlags.Static | स्टेटिक नेस्टेड टाइप्स शामिल करें |
BindingFlags.Instance | इंस्टेंस नेस्टेड टाइप्स शामिल करें (नेस्टेड टाइप्स के लिए लागू नहीं) |
नेस्टेड टाइप्स का उपयोग
// इंस्टेंस बनाना
Type nestedType = typeof(Subject).GetNestedType("BasicSubject");
object instance = Activator.CreateInstance(nestedType);
// नेस्टेड टाइप के मेंबर्स एक्सेस
var members = nestedType.GetMembers();
foreach (var m in members) {
Console.WriteLine(m.Name);
}
सामान्य उपयोग के मामले
- रिफ्लेक्शन-आधारित सीरियलाइज़र्स
- डायनामिक टाइप डिस्कवरी
- प्लगइन आर्किटेक्चर
- कोड जनरेशन टूल्स
- टेस्टिंग फ्रेमवर्क्स