Sdílet prostřednictvím


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

CallerFilePathAttribute

Úplná cesta zdrojového souboru, který obsahuje volajícího.Toto je cesta k souboru v době kompilace.

String

CallerLineNumberAttribute

Číslo řádku ve zdrojovém souboru volání metody.

Integer

CallerMemberNameAttribute

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.

Hh534540.collapse_all(cs-cz,VS.110).gifNá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

Atributy (C# a Visual Basic)

Koncepty

Společné atributy (C# a Visual Basic)

Volitelné parametry (Visual Basic)

Pojmenované a volitelné argumenty (Příručka programování C#)

Další zdroje

Koncepty programování.