Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Hívó adatai attribútumok használatával adatokat szerezhet be a hívóról egy metódushoz. Beszerezheti a forráskód fájl elérési útját, a forráskód sorszámát és a hívó tagnevét. Ezek az információk hasznosak a nyomkövetéshez, a hibakereséshez és a diagnosztikai eszközök létrehozásához.
Ezen információk beszerzéséhez olyan attribútumokat kell használnia, amelyek az opcionális paraméterekre vonatkoznak, amelyek mindegyike alapértelmezett értékkel rendelkezik. Az alábbi táblázat a System.Runtime.CompilerServices névtérben definiált hívóinformációs attribútumokat sorolja fel:
| Jellemző | Leírás | Típus |
|---|---|---|
| CallerFilePath | A hívót tartalmazó forrásfájl teljes elérési útja. Ez a fájl elérési útja fordítási időben. | String |
| CallerLineNumber | Annak a forrásfájlnak a sorszáma, amelyen a metódust meghívják. | Integer |
| CallerMemberName | A hívó metódusa vagy tulajdonságneve. Tekintse meg a témakör tagnevek szakaszát. | String |
példa
Az alábbi példa bemutatja, hogyan használhatja ezeket az attribútumokat egy hívó nyomon követésére.
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}")
Megjegyzések
A hívóinformációs attribútumok csak választható paraméterekre alkalmazhatók. A Hívó adatai attribútumok miatt a fordító megírja a megfelelő értéket minden választható paraméterhez, amely egy hívóinformációs attribútummal van díszítve.
A hívóazonosító információk értékei fordításkor literálokként lesznek kibocsátva a Köztes Nyelvben (IL). A StackTrace tulajdonság kivételeinek eredményeitől eltérően az eredményeket nem befolyásolja az elfedés.
Explicit módon megadhatja az opcionális argumentumokat a hívó információinak szabályozásához vagy a hívó adatainak elrejtéséhez.
Tagnevek
Az CallerMemberName attribútum használatával elkerülheti, hogy a tag nevét String argumentumként adja meg a hívott metódushoz. Ezzel a technikával elkerülheti azt a problémát, hogy az újrabontás átnevezése nem módosítja az String értékeket. Ez az előny különösen hasznos a következő feladatokhoz:
- Nyomkövetési és diagnosztikai rutinok használata.
- Az INotifyPropertyChanged interfész implementálása adatok kötésekor. Ez az interfész lehetővé teszi, hogy egy objektum tulajdonsága értesítse a kötött vezérlőelemet arról, hogy a tulajdonság megváltozott, így a vezérlő megjelenítheti a frissített információkat. Az
CallerMemberNameattribútum nélkül a tulajdonság nevét literálként kell megadnia.
Az alábbi diagram a CallerMemberName attribútum használatakor visszaadott tagneveket mutatja.
| A hívások a következő időszakban történnek | Felhasználói név eredménye |
|---|---|
| Metódus, tulajdonság vagy esemény | Annak a metódusnak, tulajdonságnak vagy eseménynek a neve, amelyből a hívás származik. |
| Konstruktor | A '.ctor' karakterlánc |
| Statikus konstruktor | A ".cctor" sztring |
| Destruktor | "Véglegesítés" karakterlánc |
| Felhasználó által definiált operátorok vagy konverziók | A tag generált neve, például "op_Addition". |
| Attribútumkonstruktor | Annak a tagnak a neve, amelyre az attribútumot alkalmazza. Ha az attribútum egy tag bármely eleme (például paraméter, visszatérési érték vagy általános típusparaméter), ez az eredmény annak a tagnak a neve, amely az adott elemhez van társítva. |
| Nem tartalmaz tagot (például szerelvényszintű vagy típusokra alkalmazott attribútumokat) | Az opcionális paraméter alapértelmezett értéke. |