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 |
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 |
|
Numer wiersza w pliku źródłowym, przy którym metoda jest wywoływana. |
Integer |
|
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.
Nazwy 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
Koncepcje
Atrybuty wspólnych (C# i Visual Basic)
Parametry opcjonalne (Visual Basic)
Argumenty nazwane i opcjonalne (Podręcznik programowania C#)