2010-08-28 13 views
5

मेरे पास कुछ डीएलएल फ़ाइलें हैं और मैं सभी सार्वजनिक वर्गों को नेमस्पेस से अलग विधियों के साथ निर्यात करना चाहता हूं (एचटीएमएल/टेक्स्ट फ़ाइल में निर्यात या कुछ भी मैं विंडोज में ctrl + c/v कर सकता हूं :))।सी # एपीआई जनरेटर

मैं दस्तावेज बनाना नहीं चाहता हूं या xml फ़ाइल के साथ अपने डीएलएस मर्ज नहीं करना चाहता हूं। मुझे बस सभी सार्वजनिक तरीकों और संपत्तियों की एक सूची चाहिए।

इसे पूरा करने का सबसे अच्छा तरीका क्या है? कोई जवाब

+2

निर्यात है कहा को? –

+0

सादा पाठ फ़ाइल या कुछ भी मैं कॉपी-पेस्ट कर सकता हूं:> – Jarek

उत्तर

6

किनारों के आसपास बहुत मोटा है, लेकिन आकार के लिए यह प्रयास करें:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Reflection; 

namespace GetMethodsFromPublicTypes 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var assemblyName = @"FullPathAndFilenameOfAssembly"; 

      var assembly = Assembly.ReflectionOnlyLoadFrom(assemblyName); 

      AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve); 

      var methodsForType = from type in assembly.GetTypes() 
           where type.IsPublic 
           select new 
            { 
             Type = type, 
             Methods = type.GetMethods().Where(m => m.IsPublic) 
            }; 

      foreach (var type in methodsForType) 
      { 
       Console.WriteLine(type.Type.FullName); 
       foreach (var method in type.Methods) 
       { 
        Console.WriteLine(" ==> {0}", method.Name); 
       } 
      } 
     } 

     static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args) 
     { 
      var a = Assembly.ReflectionOnlyLoad(args.Name); 
      return a; 
     } 
    } 
} 

नोट: यह संपत्ति getters/setters और विरासत में मिला तरीकों को बाहर करने के शोधन की जरूरत है, लेकिन यह एक सभ्य प्रारंभिक जगह

+0

LINQ क्वेरी में उन नामस्थानों को प्रति वर्गों को समूहित करने और प्रत्येक नामस्थान नाम को आउटपुट करने की आवश्यकता है, अगर मैं ओपी को सही तरीके से समझता हूं। – PHeiberg

+0

@PHeiberg, मैंने यह नहीं कहा कि यह सही था! ;-) उस ने कहा, मैं ओपी के बाद क्या था उससे मेल खाने के लिए इसे tweaked कर सकता था। उचित बिंदु अच्छी तरह से बनाया =) – Rob

1

आप Redgate सॉफ्टवेयर से नेट Reflector पर एक नज़र हुई है यहाँ शुरू कर सकते हैं। इसमें एक निर्यात समारोह है।

+0

यह सिर्फ सभी फाइलों को निर्यात करता है और वीएस प्रोजेक्ट बनाता है। मुझे वास्तव में इसकी आवश्यकता नहीं है। – Jarek