Feedback

C# - Attribut: Caller...

Veröffentlicht von am 16.04.2014
(0 Bewertungen)
Ab .NET 4.5 gibt es verschiedene Attribute, welche mit Caller beginnen (siehe [1]). Diese Attribute kann man auf optionale Parameter einer Funktion anwenden. Das hat zur Folge, dass nicht angegebene Parameter mit Informationen über den Aufrufer versehen werden. Dieses Beispiel zeigt so eine einfache Trace-Methode fürs debuggen.

Wo kann man es verwenden?
Einsatzgebiete wären die INotifyPropertyChanged-Schnittstelle (siehe [2]), sodass man OnPropertyChanged() ohne Parameter im Setter aufrufen kann und natürlich für Debugausgaben (siehe Snippet).

Hinweise
Dieses Snippet ähnelt stark dem unter [1] gezeigten Beispiel.
> Es ist nicht einfach kopiert und ich dachte diese Attribute wären ein Snippet wert.
In dem Beispiel unter [2], zur INotifyPropertyChanged Schnittstelle, wurde im .NET 4.5 das CallerMemberName-Attribut verwendet.

Benötigte Namespaces
System.Runtime.CompilerServices - Für die Attribute
System.Diagnostics - Für die Trace-Klasse

Links
[1] http://msdn.microsoft.com/de-de/library/hh534540.aspx
[2] http://msdn.microsoft.com/de-de/library/ms229614.aspx
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

/// <summary>
/// Schreibt eine Meldung in den Ablaufverfolgungslistener in der <see cref="System.Diagnostics.Trace.Listeners"/>-Auflistung mit Informationen über den Aufrufer.
/// </summary>
/// <param name="msg">Die zu Schreibende Nachricht.</param>
/// <param name="member">Die aufrufende Methode.<para/>Wird diese nicht angegeben, wird sie automatisch ermittelt.</param>
/// <param name="file">Die Datei in der diese Methode aufgerufen wird.<para/>Wird diese nicht angegeben, wird sie automatisch ermittelt.</param>
/// <param name="line">Die Zeile in der diese Methode aufgerufen wird.<para/>Wird diese nicht angegeben, wird diese automatisch ermittelt.</param>
public static void TraceMessage(string msg, [CallerMemberName]string member = null, [CallerFilePath]string file = null, [CallerLineNumber]int line = 0)
{
    Trace.WriteLine(msg);
    Trace.WriteLine(" → member name: " + member);
    Trace.WriteLine(" → source file: " + file);
    Trace.WriteLine(" → line number: " + line);
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!