Programiranje

Kako programirati s pomočjo PostSharp v C #

Aspektno usmerjeno programiranje (AOP) je programska paradigma, ki vam omogoča, da določite politike za nemoteno upravljanje medsektorskih problemov v aplikacijah. AOP lahko uporabimo za odstranjevanje prepletene kode, pisanje čistejše kode, povečanje abstrakcije in modularnosti kode, zmanjšanje stroškov vzdrževanja in razvoja ter naredi aplikacije bolj obvladljive in prilagodljive. PostSharp je eno izmed najbolj priljubljenih orodij, ki so na voljo za uporabo AOP v aplikacijah.

Kako začeti

Če želite začeti uporabljati PostSharp, boste morda želeli namestiti najnovejšo stabilno različico s pomočjo konzole Package Manager. PostSharp lahko namestite tudi v oknu "Upravljanje paketov NuGet". Če želite začeti uporabljati PostSharp v svoji aplikaciji, sledite tem korakom.

1. Odprite Visual Studio 2015.

2. V meniju Visual Studio kliknite Datoteka> Novo> Projekt.

3. Na seznamu prikazanih predlog predlog izberite predlogo aplikacije Console.

4. Shranite novi projektni program ukazne mize z imenom.

5. V meniju Visual Studio kliknite Orodja> Upravitelj paketov NuGet> Upravljanje paketov NuGet za rešitev.

6. Poiščite najnovejšo stabilno izdajo PostSharp in kliknite Namesti.

In to je vse, kar morate za zdaj storiti. Ko vas sistem pozove, izberite projekte, v katere želite namestiti PostSharp, in kliknite V redu. Ko je namestitev končana, ste pripravljeni za uporabo PostSharp v svoji aplikaciji.

Programiranje PostSharp

Ko je PostSharp nameščen, ga lahko začnete uporabljati v svoji aplikaciji. Če želite to narediti, boste morali ustvariti enega ali več vidikov, ki jih bo aplikacija uporabljala. Eden od načinov za uporabo AOP v aplikacijah je uporaba atributov. Ko je vaš vidik definiran, ga boste želeli uporabiti v programu s pomočjo atributov.

V oknu Raziskovalec rešitev izberite svoj projekt, z desno miškino tipko kliknite in dodajte nov razred z imenom ExceptionAspect. Upoštevajte, da mora biti vidik, potreben za obravnavo izjem v vaši aplikaciji, iz razreda OnExceptionAspect knjižnice PostSharp. OnExceptionAspect vključuje metodo, imenovano OnException, ki jo boste morali preglasiti za obravnavo izjem. Naslednja koda ponazarja naš razred aspektov izjem po meri.

[Serijski]

javni razred ExceptionAspect: OnExceptionAspect

    {

javno razveljavi void OnException (argumenti MethodExecutionArgs)

        {

Console.WriteLine ("Napaka pri:" +

DateTime.Now.ToShortTimeString () + "Sporočilo o napaki:" +

args.Exception.Message);

args.FlowBehavior = FlowBehavior.Continue;

base.OnException (args);

        }

    }

Vsak vidik mora biti serializiran - upoštevajte uporabo atributa [Serializable] v zgoraj prikazanem razredu ExceptionAspect. Zdaj, ko je aspekt na svojem mestu, ga lahko uporabite z eno ali več metodami v svoji aplikaciji z uporabo atributov. Naslednji delček kode ponazarja vzorčno metodo za uporabo pravkar ustvarjenega aspekta izjeme.

[ExceptionAspect]

javna statična praznina TestExceptionAspect ()

  {

vrzi novo izjemo ("To je testno sporočilo");

  }

Pravkar ustvarjeni aspekt izjeme po meri lahko uporabite za eno ali več metod v aplikaciji - ali celo na ravni razreda. Če se vidik uporabi na ravni razreda, se obravnavajo izjeme, ki jih vrže katera koli metoda razreda. PostSharp vidike je mogoče uporabiti tudi skozi celoten sklop. Ta funkcija je znana kot Multicast in jo je mogoče uporabiti v ciljnem imenskem prostoru z določitvijo naslednje izjave v datoteki AssemblyInfo.cs:

[montaža: ExceptionAspect (AttributeTargetTypes = "PostSharp. *")]

"PostSharp. *" V zgornjem delčku kode se nanaša na vse vrste, ki so prisotne v imenskem prostoru PostSharp.

Razred OnMethodBoundaryAspect omogoča izvajanje kode po meri pred in po izvedbi metode. Medtem ko se metoda OnEntry izvaja pred izvajanjem metode, za katero je uporabljen vidik, se metoda OnExit izvede po izvedbi metode. Naslednji seznam kod ponazarja, kako lahko z uporabo aspekta izmerite čas izvajanja metode. Spodnji razred ExecutionTimeAspect izpelje razred OnMethodBoundaryAspect in preglasi metode OnEntry in OnExit.

 [Serijski]

javni razred ExecutionTimeAspect: OnMethodBoundaryAspect

    {

[Neserizirano]

Štoparica štoparica;

javno preglasitev void OnEntry (argumenti MethodExecutionArgs)

        {

stopWatch = Stopwatch.StartNew ();

base.OnEntry (args);

        }

javno razveljavi void OnExit (argumenti MethodExecutionArgs)

        {

niz metoda = novo

StackTrace (). GetFrame (1) .GetMethod (). Ime;

string message = string.Format ("Metoda: [{0}] je

{1} ms za izvedbo. ",

                        metoda, stopWatch.ElapsedMilliseconds);

Console.WriteLine (sporočilo);

base.OnExit (args);

        }

    }

Zgornjo metodo OnExit lahko tudi prilagodite, da zabeležite čas izvajanja metod. Zdaj, ko je vaš vidik pripravljen za uporabo, ga lahko uporabite na enega ali več načinov za pridobitev časa izvedbe.

[ExecutionTimeAspect]

javna statična praznina TestExceptionAspect ()

{

// Nekaj ​​kode

}

Če želite izvedeti več o PostSharp, preberite dokumentacijo.

$config[zx-auto] not found$config[zx-overlay] not found