webForumDet fria alternativet

Erhålla dynamiskt alla variabelvärden i en funktion?

.NET

4 svar · 261 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Finns det något smart sätt man kan använda sig av för att erhålla alla varibelvärden i en funktion? Går det tex att använda sig av reflection för detta?

Function GetObject(id, createdDate)
Dim Counter AS Integer = 0
....
End Function

Det jag skulle vilja få ut tex i ovanstående funktion är id, createdDate samt counter. Någon som vet hur man kan göra detta på ett bra sätt?

Medlem sedan dec. 19996 522 inlägg
#2

Tittat på utparametrar?

Medlem sedan maj 20011 312 inlägg
#3

Hur menar du? :) Jag vill inte ändra funktionens returvärden utan det jag vill är att kunna logga "funtionstillståndet" i form av vilka variabelvärden som är satta. Via reflection kan man relativt enkelt tex loopa igenom dynamiskt fältdeklarationer och deras värden för ett objekt. Det jag är nyfiken på är om man kan göra något liknande med funktionsvariabler.

Medlem sedan dec. 19996 522 inlägg
#4

Out parameters kanske inte finns i VB, men det verkar ju vara det du vill göra, inte returvärde utan returparameter.

Typ

myMethod(out int myOutParam)
{
myOutParam=100;
}

void Main()
{
int myInt=5;
myMethod(myInt);
Console.WriteLine(out myInt);
}

Om du förklarar ett scenario kanske jag förstår bättre vad du menar, vad ska du ha det till?

Medlem sedan maj 20011 312 inlägg
#5

Om jag förstått out parametrar rätt så är det detsamma som Byref i VB. Men det känns inte riktigt som det är det jag är jag vill göra :) Ska försöka förklara lite mer...

Om jag har tex 10 funktioner så skulle jag vilja på ett väldigt enkelt sätt logga alla varibelvärden i dessa funktioner. Ett sätt som man kan göra detta på är att i slutet i funktionen lägga in en rad likt:

Function GetObject(id, createdDate)
Dim Counter AS Integer = 0
....

Logging("Counter=" & Counter & ", id=" & id & ", createdDate=" & createdDate)
End Function

Problemet med detta är att om jag skulle vilja logga en annan funktion så måste jag först söka igenom hela funktionen efter alla variabler och konkatera ihop dessa. Det jag skulle vilja är att detta sker dynamiskt på något sätt så att om man skulle vilja logga någon annan funktion så är det bara att lägga in den koden i den funktion utan omskrivning av kod. Anledningen för att jag vill göra detta är för att hitta ett fel som bara uppstår i produktionsmiljön lite då och då.

270 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)