Informacje o wywołującym (C# i Visual Basic)

Za pomocą atrybutów Info wywołującego, można uzyskać informacje o wywołującego metodę.Możesz uzyskać ścieżkę pliku kodu źródłowego, numer wiersza kodu źródłowego i nazwa elementu członkowskiego wywołującego.Informacje te są przydatne do śledzenia, debugowanie i tworzenia narzędzi diagnostycznych.

Aby uzyskać te informacje, należy użyć atrybutów, które są stosowane do parametrów opcjonalnych, z których każda ma wartość domyślną.W poniższej tabeli przedstawiono atrybuty wywołującego informacje, które są zdefiniowane w System.Runtime.CompilerServices obszaru nazw:

Atrybut

Opis

Typ

CallerFilePathAttribute

Pełna ścieżka pliku źródłowego, która zawiera obiekt wywołujący.Jest to ścieżka do pliku w czasie kompilacji.

String

CallerLineNumberAttribute

Numer wiersza w pliku źródłowym, przy którym metoda jest wywoływana.

Integer

CallerMemberNameAttribute

Nazwa metody lub właściwości obiektu wywołującego.Zobacz Member Names później w tym temacie.

String

Przykład

Poniższy przykład pokazuje jak używać atrybuty wywołującego informacje.Na każde wywołanie TraceMessage zastępuje metodę, informacje o wywołującym jako argumenty do parametrów opcjonalnych.

' 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

Uwagi

Należy określić jako wartość domyślna jawny dla każdego parametru.Atrybuty Info rozmówcy nie można zastosować do parametrów, które nie są określone jako opcjonalne.

Atrybuty Info wywołujący nie należy parametr opcjonalny.Zamiast tego wpływają na domyślną wartość, która jest przekazywana, gdy argument zostanie pominięty.

Obiekt wywołujący Info wartości są emitowane jako literały do pośredniego języka (IL) w czasie kompilacji.W przeciwieństwie do wyników z StackTrace właściwość wyjątki, wyniki nie są dotknięte żart fałszerstwo.

Hh534540.collapse_all(pl-pl,VS.110).gifNazwy składników

Można użyć CallerMemberName atrybutu, aby uniknąć, określając nazwę Członkowskie jako String argument do metody nazywane.Przy użyciu tej metody, można uniknąć tego problemu, Zmienić przeróbek nie ulega zmianie String wartości.Ta usługa jest szczególnie przydatne w przypadku następujących zadań:

  • Za pomocą procedury służące do śledzenia i diagnostycznych.

  • Wykonawczych INotifyPropertyChanged interfejsu podczas wiązania danych.Ten interfejs umożliwia właściwości obiektu do powiadamiania formant związany, że właściwość uległ zmianie, tak aby formant można wyświetlić zaktualizowane informacje.Bez CallerMemberName atrybutu, należy określić nazwę właściwości, jako literał.

Na poniższym wykresie przedstawiono członka nazw, które są zwracane podczas korzystania z CallerMemberName atrybut.

Wywołania następuje w ciągu

Wynik nazwa Członkowskie

Metody, właściwości lub zdarzenia

Nazwa metody, właściwości lub zdarzenia, z którego pochodziło wywołanie.

Konstruktor

Ciąg "elementu .ctor."

Konstruktora statycznego

Ciąg ".cctor"

Destruktor

Ciąg "Finalize"

Operatory zdefiniowane przez użytkownika lub konwersji

Nazwa wygenerowana dla Państwa Członkowskiego, na przykład "op_Addition".

Konstruktor atrybutu

Nazwa elementu członkowskiego, do którego stosuje się ten atrybut.Jeśli atrybut jest dowolny element wewnątrz członka (takich jak parametr, zwracana wartość lub parametr typu rodzajowego), to wynik jest nazwa elementu członkowskiego, który jest skojarzony z tym elementem.

Żaden członek nie zawierające (na przykład poziom zestawu lub atrybuty, które są stosowane do typów)

Wartość domyślna parametr opcjonalny.

Zobacz też

Informacje

Atrybuty (C# i Visual Basic)

Koncepcje

Atrybuty wspólnych (C# i Visual Basic)

Parametry opcjonalne (Visual Basic)

Argumenty nazwane i opcjonalne (Podręcznik programowania C#)

Inne zasoby

Pojęcia związane z programowaniem