WebElektronika

CallerInfo osztály alkalmazása a C# nyelvben

person access_time 2017.04.26.
Korábban foglalkoztunk a logolási lehetőségekkel, megnéztük a Log4Net használatát is. Ha alkalmazunk a fejlesztéseink során különböző rétegeket (pl.: adatbázis elérés, front-end), akkor problémákba ütközhetünk, hogy amiket logolni szeretnénk, azok hol keletkeztek. Például, a kivételdobást melyik metódushívás okozta. Ezért megnézzük most a CallerInfo osztály alkalmazását, amely a logolást nagyon kényelmessé teszi.


Indítsuk el a Visual Studio-t és hozzunk létre egy Console projektet. A projektünk neve : ConsoleCaller (1. ábra).

kep
1. ábra   A projekt létrehozása
 

Másoljuk be a következő kódot.

 

class Program
    {
        public static int Szamol(int a, int b, [CallerMemberName] string honnan = "",
            [CallerFilePath] string fileeleres = "",
            [CallerLineNumber] int sor = 0)
        {
            Console.WriteLine(String.Format("innen : {0}, \t file : {1}, \t sor : {2}",
                honnan, fileeleres, sor));
            return a + b;
        }
        static void Main(string[] args)
        {
            Szamol(10, 20);

            Console.ReadLine();
        }
    }

 

A "Szamol" metódus paraméterlistájában szerepel a két összeadandó szám, illetve három plusz paraméter, amelyben a metódusunk különböző futtatási paraméterét fogjuk eltárolni. Ezeket az adatokat fogjuk megjeleníteni ebben a metódusban, de természetesen ezek elmenthetők akár XML file-ba, vagy adatbázisba is.
Amikor meghívjuk a Szamol() metódust, akkor a "honnan", "fileeleres", illetve a "sor" nevű paraméterek megkapják a metódushívás különböző adatait. Ehhez szükséges a különböző "Caller" attribútumok használata. Látható a Szamol() metódus paraméterlistájában, hogy az előbb felsorolt paraméterek a paraméterlistában értékeket kapnak. Ez a lehetőség a .NET4 keretkörnyezettől lehetséges.

Ahhoz, hogy sikeresen tudjuk futtatni a programunkat, fel kell vennünk egy szerelvényt (2. ábra).

kep
2. ábra   A "System.Runtime.CompilerServices" felvétele
 

Ezután indítsuk el a programunkat, a futási eredményt a 3. ábrán látjuk.

kep
3. ábra   A futási eredmény (kattints a képre)
 

Ennek a megoldásnak egy hátránya van. Ha elhelyezzük más könyvtárba a nem install verzióban elkészített programunkat, akkor az új helyén elindítva is a korábbi elérési útvonalat mutatja a programunk.