2016-07-19 13 views
1

Ich habe ein einfaches BeispielMethode mit dem Attribut als Eingangsparameter

class Program 
{ 
    static void DoProcessing() 
    { 
     TraceMessage("Hello from DoProcessing."); 
    } 

    static void TraceMessage(string message, 

      [CallerMemberName] string memberName = "", 
      [CallerFilePath] string sourceFilePath = "", 
      [CallerLineNumber] int sourceLineNumber = 0) 
    { 
     Console.WriteLine("message: " + message); 
     Console.WriteLine("member name: " + memberName); 
     Console.WriteLine("source file path: " + sourceFilePath); 
     Console.WriteLine("source line number: " + sourceLineNumber); 
     Console.WriteLine(new string('-',25)); 
    } 

    static void Main() 
    { 

     TraceMessage("Hello from Main!"); 

     Console.WriteLine(new string('-',40)); 
     DoProcessing(); 
     Console.ReadKey(); 
    } 
} 

jemand erklären kann, was ist der Zweck der Verwendung von [CallerMemberName], [CallerFilePath], [CallerLineNumber] Attribute als Eingabeparameter? Und wann sollten wir unsere Eingabeparameter mit Attributen versehen?

+0

Haben Sie diese Attribute googeln versucht? – PoweredByOrange

+0

@PoweredByOrange Ja, es ist offensichtlich, was diese Attribute bedeuten, aber wann sollten wir unsere Eingabeparameter mit Attributen versehen? –

+1

Für weitere Details lesen Sie: https://msdn.microsoft.com/en-us/library/mt653988.aspx –

Antwort

0

CallerMemberName Ermöglicht Ihnen, die Methode oder den Eigenschaftsnamen des Aufrufers für die Methode abzurufen.

CallerFilePath Ermöglicht das Abrufen des vollständigen Pfads der Quelldatei, die den Aufrufer enthält. Dies ist der Dateipfad zum Zeitpunkt der Kompilierung.

CallerLineNumber Ermöglicht das Abrufen der Zeilennummer in der Quelldatei, in der die Methode aufgerufen wird.

Diese Attribute gehören zum Namespace System.Runtime.CompilerServices, der Funktionen für Compiler-Schreiber bereitstellt, die verwalteten Code verwenden, um Attribute in Metadaten anzugeben, die sich auf das Laufzeitverhalten der Common Language Runtime auswirken.

In Ihrem Fall wird die Ausgabe

message: Hello from Main! 
member name: Main 
source file path: c:\Users\Saket\Documents\Visual Studio 2012\Projects\ConsoleAp 
plication3\ConsoleApplication3\Program.cs 
source line number: 35 

Hier werden Sie Anrufernamen drucken, die main() und Dateipfad und die Zeilennummer ist die 35 (TraceMessage("Hello from Main!");) ist. Hoffe es ist klar.

Referenz system.runtime.compilerservices

+0

@ sergiy-lichenko Bitte markieren Sie die Frage beantwortet, damit es nicht unbeantwortet erscheint. –

Verwandte Themen