से सभी सार्वजनिक विधियों को पुनर्प्राप्त करने के लिए मेरे पास * .dll सी # के साथ लिखा गया है और मुझे उस * .dll में निहित सभी सार्वजनिक विधियों या कक्षाओं की सूची प्राप्त करने की आवश्यकता है। क्या सी # के साथ प्रोग्रामेटिक रूप से ऐसा करने का कोई तरीका है?* .dll
Q
* .dll
9
A
उत्तर
2
सिस्टम.Net.Reflection का उपयोग करें। प्रतिबिंब कक्षाएं आपको रन समय पर डीएलएल के प्रकारों के मेटाडेटा से पूछने देती हैं।
this.GetType().Assembly.GetTypes();
12
तरह हाँ Assembly.GetTypes का उपयोग प्रकार के सभी को निकालने के लिए, और उसके बाद सार्वजनिक तरीकों दोहराने में प्रत्येक प्रकार के प्रतिबिंब का उपयोग करें।
Assembly a = Assembly.LoadWithPartialName("...");
Type[] types = a.GetTypes();
foreach (Type type in types)
{
if (!type.IsPublic)
{
continue;
}
MemberInfo[] members = type.GetMembers(BindingFlags.Public
|BindingFlags.Instance
|BindingFlags.InvokeMethod);
foreach (MemberInfo member in members)
{
Console.WriteLine(type.Name+"."+member.Name);
}
}
4
var assembly = // grab assembly
var types = assembly.GetExportedTypes();
foreach (var type in types) {
var methods = type.GetMethods(BindingFlags.Public);
}
GetExportedTypes विधानसभा में सभी सार्वजनिक प्रकार वापस आ जाएगी। आपने यह भी निर्दिष्ट नहीं किया कि आप केवल उदाहरण विधियों, स्थिर विधियों या दोनों चाहते थे।
एक शब्द: प्रतिबिंब। – BoltClock