Volajícího (C# a Visual Basic)
Pomocí atributů volající Info lze získat informace o volající metodu.Můžete získat cestu k souboru zdrojového kódu, číslo řádku v zdrojový kód a název člena volajícího.Tyto informace jsou užitečné pro sledování ladění a vytváření diagnostické nástroje.
Chcete-li získat tyto informace, je použít atributy, které jsou použity volitelné parametry, z nichž každý má výchozí hodnotu.Následující tabulka obsahuje informace o volajícím atributy, které jsou definovány v System.Runtime.CompilerServices oboru názvů:
Atribut |
Description |
Type |
Úplná cesta zdrojového souboru, který obsahuje volajícího.Toto je cesta k souboru v době kompilace. |
String |
|
Číslo řádku ve zdrojovém souboru volání metody. |
Integer |
|
Metoda nebo vlastnost název volajícího.Viz Member Names dále v tomto tématu. |
String |
Příklad
Následující příklad ukazuje, jak použít atributy Info volajícího.Každé volání TraceMessage metoda informace volajícího dosazeny jako argumenty nepovinných parametrů.
' Imports System.Runtime.CompilerServices
' Imports System.Diagnostics
Private Sub DoProcessing()
TraceMessage("Something happened.")
End Sub
Public Sub TraceMessage(message As String,
<CallerMemberName> Optional memberName As String = Nothing,
<CallerFilePath> Optional sourcefilePath As String = Nothing,
<CallerLineNumber()> Optional sourceLineNumber As Integer = 0)
Trace.WriteLine("message: " & message)
Trace.WriteLine("member name: " & memberName)
Trace.WriteLine("source file path: " & sourcefilePath)
Trace.WriteLine("source line number: " & sourceLineNumber)
End Sub
' Sample output:
' message: Something happened.
' member name: DoProcessing
' source file path: C:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoVB\CallerInfoVB\Form1.vb
' source line number: 15
// using System.Runtime.CompilerServices
// using System.Diagnostics;
public void DoProcessing()
{
TraceMessage("Something happened.");
}
public void TraceMessage(string message,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
{
Trace.WriteLine("message: " + message);
Trace.WriteLine("member name: " + memberName);
Trace.WriteLine("source file path: " + sourceFilePath);
Trace.WriteLine("source line number: " + sourceLineNumber);
}
// Sample Output:
// message: Something happened.
// member name: DoProcessing
// source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
// source line number: 31
Poznámky
Musí zadat explicitní výchozí hodnotu pro každý volitelný parametr.Informace o volajícím atributy nelze použít parametry, které nejsou určeny jako volitelné.
Informace o volajícím atributy označovat parametr volitelný.Vliv jejich výchozí hodnoty, která je předána v, pokud je argument vynechán.
Volající Info hodnoty jsou emitovány jako literály do zprostředkující jazyk (IL) v době kompilace.Na rozdíl od výsledků StackTrace vlastnost pro výjimky, výsledky nejsou ovlivněny předstírání podvod vtip.
Názvy členů
Můžete použít CallerMemberName atributu nezadávejte název členu jako String argument volané metody.Pomocí této techniky se problému vyhnout, Přejmenovat optimalizace struktury programu nezmění String hodnoty.Tato výhoda je zvláště užitečné pro následující úkoly:
Pomocí trasování a diagnostických rutin.
Provádění INotifyPropertyChanged rozhraní při vázání dat.Toto rozhraní umožňuje vlastnost objektu oznámit vázaný ovládací prvek, který byl změněn na vlastnost, tak, aby ovládací prvek můžete zobrazit aktualizované informace.Bez CallerMemberName atributu, je nutné zadat název vlastnosti jako literál.
Následující diagram zobrazuje názvy, které jsou vráceny při použití člena CallerMemberName atributu.
Dojde k volání v rámci |
Výsledek členské jméno |
---|---|
Metodu, vlastnost nebo událost |
Název metody, vlastnosti nebo událost, z něhož pochází volání. |
Konstruktor |
Řetězec ".ctor" |
Statický konstruktor |
Řetězec ".cctor" |
Destructor |
Řetězec "Finalize." |
Operátory definované uživatelem nebo převody |
Vygenerovaný název členu, například "op_Addition". |
Konstruktor atributů |
Název člena, na který je použit atribut.Pokud je atribut libovolný prvek v rámci členských (například parametr vrácená hodnota nebo obecný typ parametru), tento výsledek je název členu, který má přidružené k tomuto prvku. |
Žádný obsahující člen (například úroveň sestavení nebo atributy, které jsou použity pro typy) |
Volitelný parametr výchozí hodnotu. |
Viz také
Referenční dokumentace
Koncepty
Společné atributy (C# a Visual Basic)
Volitelné parametry (Visual Basic)
Pojmenované a volitelné argumenty (Příručka programování C#)