2010-02-16 11 views
6

कहें कि सी # में उस मामले के लिए आपको MethodInfo, या MemberInfo के किसी अन्य उप-वर्ग मिला है। क्या घोषणा की गई फ़ाइल के नाम को पुनर्प्राप्त करना संभव है और संभावित रूप से लाइन नंबर जहां घोषणा शुरू होती है? स्टैकट्रेस का उदाहरण बनाने के बाद से यह जानकारी डीबग-मोड मेटाडेटा में कहीं मौजूद है, जो आपको वह जानकारी देगी। क्या मुझे सिस्टम में दिखाना चाहिए। सिस्टम के बजाय डायग्नोस्टिक्स। रिफ्लेक्शन?क्या सी # में प्रतिबिंब के माध्यम से फ़ाइल जानकारी पुनर्प्राप्त करना संभव है?

उत्तर

4

रेखा संख्याओं के बारे में जानकारी प्रतीक फ़ाइलों (या "प्रोग्राम डेटाबेस" .pdb) से आम तौर पर आ रही है। FxCop जैसे टूल आईएल को स्रोत कोड पर वापस जोड़ने के लिए प्रतीक फ़ाइल का उपयोग करते हैं। मैंने आपके लिए निम्नलिखित एपीआई गुगल किया: http://msdn.microsoft.com/en-us/library/system.diagnostics.symbolstore.aspx

1

आपको .pdb फ़ाइलों से जानकारी खींचने के लिए सिस्टम का उपयोग करना चाहिए। डायग्नोस्टिक्स सिंबल क्लासेस। यहाँ एक अच्छा blog उस पर

इस तरह कुछ काम हो सकता है है:

using System; 
using System.Diagnostics; 

class Foo 
{ 
static void Main() 
{ 
    SmallFunc(); 
} 

static void SmallFunc() 
{ 
    PrintStack(); 
} 
static void PrintStack() 
{ 
    StackTrace st = new StackTrace(true); // true means get line numbers. 
    foreach(StackFrame f in st.GetFrames()) { 
     Console.Write(f); 
    } 
} 
} 
संबंधित मुद्दे

 संबंधित मुद्दे