* .dll

2011-09-17 19 views
9

से सभी सार्वजनिक विधियों को पुनर्प्राप्त करने के लिए मेरे पास * .dll सी # के साथ लिखा गया है और मुझे उस * .dll में निहित सभी सार्वजनिक विधियों या कक्षाओं की सूची प्राप्त करने की आवश्यकता है। क्या सी # के साथ प्रोग्रामेटिक रूप से ऐसा करने का कोई तरीका है?* .dll

+2

एक शब्द: प्रतिबिंब। – BoltClock

उत्तर

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 विधानसभा में सभी सार्वजनिक प्रकार वापस आ जाएगी। आपने यह भी निर्दिष्ट नहीं किया कि आप केवल उदाहरण विधियों, स्थिर विधियों या दोनों चाहते थे।