C#

2010-09-13 16 views
6

नौसिखिया में फ्रेमवर्क इंटरफेस की सूची C# में वहाँ IDisposable, Iqueryable, IEnumerable उपलब्ध है जो विभिन्न उपयोगों है जैसे कई ढांचा इंटरफ़ेस हैं वहाँ एक सूची ऐसी प्रणाली इंटरफेस के लिए उपलब्ध है जो के रूप में तैयार संदर्भC#

उत्तर

7

इस्तेमाल किया जा सकता है अच्छी तरह से, नीचे एक त्वरित स्क्रिप्ट मैं अपने कंप्यूटर के .NET विधानसभाओं स्कैन और सभी इंटरफ़ेस प्रकार उनके भीतर परिभाषित

आउटपुट फ़ाइल था 1657 लाइनों लंबे *, इसलिए ... आप कर सकते हैं खोजने के लिए भाग गया है अपनी खोज को थोड़ा संकीर्ण करें;)

Console.Write("Enter a path to write the list of interfaces to: "); 
string savePath = Console.ReadLine(); 

var errors = new List<string>(); 
using (var writer = new StreamWriter(savePath)) 
{ 
    string dotNetPath = @"C:\Windows\Microsoft.NET\Framework"; 
    string[] dllFiles = Directory.GetFiles(dotNetPath, "*.dll", SearchOption.AllDirectories); 

    foreach (string dllFilePath in dllFiles) 
    { 
     try 
     { 
      Assembly assembly = Assembly.LoadFile(dllFilePath); 
      var interfaceTypes = assembly.GetTypes() 
       .Where(t => t.IsInterface); 
      foreach (Type interfaceType in interfaceTypes) 
      { 
       writer.WriteLine(interfaceType.FullName); 
       Console.WriteLine(interfaceType.FullName); 
      } 
     } 
     catch 
     { 
      errors.Add(string.Format("Unable to load assembly '{0}'.", dllFilePath)); 
     } 
    } 
} 

foreach (string err in errors) 
{ 
    Console.WriteLine(err); 
} 

Console.ReadLine(); 

* और ईमानदार होने के लिए, मुझे यह भी पता नहीं है कि यह दृष्टिकोण कितना व्यापक था।

5

ठीक है, कई विशिष्ट उद्देश्यों के लिए बहुत बेस्पेक हैं। यदि आपने सूचीबद्ध किए हैं तो उनमें से सभी में कुछ समय लगेगा।

मुख्य उनके जो मेरे हैं IList/IList<T> (सेट/संग्रह/सूचियां), IDictionary<TKey,TValue>, IEnumerable<T> (IEnumerable के जेनेरिक संस्करण), और IEnumerator (प्लस सामान्य जुड़वां ऊपर को जोड़ना होगा, हालांकि सच में कुछ ही लोगों की जरूरत है IEnumerator के खिलाफ कोड)।

आप किसी भी क्षेत्र में चाहते हैं, तो हो सकता है कई कई और अधिक है कि आप जल्दी से पूरा होगा - डेटा का उपयोग, आदि के लिए IDbCommand/IDataReader तरह बातें - लेकिन यह सिर्फ इंटरफेस कि महत्वपूर्ण हैं नहीं है। Stream जैसी चीजें एक कक्षा (हालांकि अमूर्त) है, लेकिन बेहद महत्वपूर्ण है।

मुझे लगता है कि एक बेहतर सवाल/रणनीति हो सकती है "दिया गया है कि मैं [विशिष्ट एक्स] कर रहा हूं, इसके बारे में जानने के लिए महत्वपूर्ण प्रकार क्या हैं?"। चूंकि हम [विशिष्ट एक्स] नहीं जानते हैं, इसलिए हम इसका उत्तर नहीं दे सकते हैं।

+0

+1 है। –

+0

अच्छी सलाह है, लेकिन मुझे लगता है कि थोड़ा सा पता लगाने में सक्षम होने के बारे में कुछ कहना है और देखें कि ढांचे में क्या है। उदाहरण के लिए, कभी भी कस्टम रिवर्टिबल चेंज ट्रैकिंग की आवश्यकता होने पर आपको कभी नहीं पता। (Http://msdn.microsoft.com/en-us/library/system.componentmodel.irevertiblechangetracking.aspx) –

4

यहाँ एक .नेट फ्रेमवर्क कक्षा लाइब्रेरी प्रलेखन

http://msdn.microsoft.com/en-us/library/ms229335.aspx

चयनित नाम स्थान आपको लगता है कि नाम स्थान में परिभाषित इंटरफेस देखेंगे पर क्लिक करते हुए है। मेरी विनम्र विपक्ष में ऐसी वर्गीकृत सूची इंटरफेस की साधारण सूची की तुलना में संदर्भ के रूप में उपयोग करने के लिए अधिक आरामदायक है। मेरे अपने से दूर और अधिक व्यावहारिक जवाब:

0

यहाँ कुछ LINQ इंटरफेस है, जहां "फ़ाइलें" पुस्तकालयों खोज करने के लिए की एक सरणी है का एक संग्रह प्राप्त करने के लिए .....

var interfaces = (from fileName in files 
        select Assembly.LoadFile(fileName) 
        into assembly 
        select assembly.GetTypes() 
        into typesInAssembly 
        from interfacesInType in typesInAssembly.Select(type => type.GetInterfaces()) 
        from interfaceInType in interfacesInType 
        select interfaceInType) 
        .Distinct() 
        .OrderBy(i => i.Name);