Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí atributů Informace o volajícím můžete získat informace o volající metodě. Můžete získat cestu k souboru zdrojového kódu, číslo řádku ve zdrojovém kódu a název člena volajícího. Tyto informace jsou užitečné pro trasování, ladění a vytváření diagnostických nástrojů.
K získání těchto informací použijete atributy, které se použijí na volitelné parametry, z nichž každá má výchozí hodnotu. Následující tabulka uvádí atributy Informace o volajícím, které jsou definovány v oboru názvů System.Runtime.CompilerServices :
| Vlastnost | Popis | Typ |
|---|---|---|
| CallerFilePath | Úplná cesta ke zdrojovému souboru, který obsahuje volajícího. Toto je cesta k souboru v době kompilace. | String |
| CallerLineNumber | Číslo řádku ve zdrojovém souboru, na kterém je volána metoda. | Integer |
| CallerMemberName | Název metody nebo vlastnosti volajícího Viz část Názvy členů dále v tomto tématu. | String |
Příklad
Následující příklad ukazuje, jak můžete tyto atributy použít k trasování volajícího.
open System.Diagnostics
open System.Runtime.CompilerServices
open System.Runtime.InteropServices
type Tracer() =
member _.DoTrace(message: string,
[<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string,
[<CallerFilePath; Optional; DefaultParameterValue("")>] path: string,
[<CallerLineNumber; Optional; DefaultParameterValue(0)>] line: int) =
Trace.WriteLine(sprintf $"Message: {message}")
Trace.WriteLine(sprintf $"Member name: {memberName}")
Trace.WriteLine(sprintf $"Source file path: {path}")
Trace.WriteLine(sprintf $"Source line number: {line}")
Poznámky
Atributy Informace o volajícím lze použít pouze u volitelných parametrů. Atributy Informace o volajícím způsobí, že kompilátor zapíše správnou hodnotu pro každý volitelný parametr zdobený atributem Informace o volajícím.
Hodnoty informací o volajícím se během kompilace emitují jako literály ve zprostředkujícím jazyce (IL). Na rozdíl od výsledků vlastnosti StackTrace pro výjimky nejsou výsledky ovlivněny obfuskací.
Volitelné argumenty můžete explicitně zadat pro řízení informací volajícího nebo skrytí informací volajícího.
Jména členů
Atribut můžete použít CallerMemberName k tomu, abyste zabránili zadání názvu člena jako argumentu pro volanou String metodu. Pomocí této techniky se vyhnete problému, který refaktoring pro přejmenování nezmění String hodnoty. Tato výhoda je zvlášť užitečná pro následující úlohy:
- Použití trasovacích a diagnostických rutin
- Implementace INotifyPropertyChanged rozhraní při vazbě dat. Toto rozhraní umožňuje vlastnost objektu oznámit vázanému ovládacímu prvku, že se vlastnost změnila, aby ovládací prvek mohl zobrazit aktualizované informace. Bez atributu
CallerMemberNameje nutné zadat název vlastnosti jako literál.
Následující graf ukazuje názvy členů, které se vrátí při použití atributu CallerMemberName.
| Volání probíhá v rámci | Výsledky jména člena |
|---|---|
| Metoda, vlastnost nebo událost | Název metody, vlastnosti nebo události, ze které volání pochází. |
| Konstruktor | Řetězec ".ctor" |
| Statický konstruktor | Řetězec ".cctor" |
| Destruktor | Řetězec "Finalize" |
| Uživatelem definované operátory nebo převody | Vygenerovaný název člena, například "op_Addition". |
| Konstruktor atributů | Název člena, na který se atribut použije. Pokud je atribut libovolný prvek v rámci členu (například parametr, návratová hodnota nebo parametr obecného typu), tento výsledek je název člena, který je přidružený k tomuto prvku. |
| Neobsahuje žádného člena (například atributy na úrovni sestavení nebo ty, které jsou aplikovány na typy) | Výchozí hodnota volitelného parametru. |