Programavimas

Darbas su „Unity“ programų bloku

Panašiai kaip „Castle Windsor“ ir „StructureMap“, „Unity Application Block“ taip pat yra IoC („Inversion of Control“) konteineris. „Microsoft“ „Unity“ programų blokas yra lengvas išplėstinis priklausomybės įpurškimo konteineris. Tai palaiko konstruktoriaus įpurškimą, turto įpurškimą ir metodo skambučio įpurškimą. Beje, „Unity“ programų blokas buvo pristatytas kaip Įmonių bibliotekos dalis.

Jei nežinote, kas yra priklausomybės įpurškimas ir valdymo inversija, pateikite trumpą paaiškinimą. Priklausomybės injekcija yra IoC principo įgyvendinimas. Valdymo inversija ir priklausomybės injekcija yra būdai, leidžiantys nutraukti priklausomybes tarp programos komponentų. Priklausomybės injekcijos principas teigia, kad aukšto lygio moduliai programoje neturėtų priklausyti nuo žemo lygio modulių; veikiau abu turėtų priklausyti nuo abstrakcijų.

„Unity Application Block“ dizaino tikslai

Programos „Unity“ blokas yra priklausomybės injekcijos (DI) konteineris. Atkreipkite dėmesį, kad „Unity“ programų blokas nepriklauso nuo „Enterprise Library“ konfigūracijos sistemos. Taigi, jūs galite jį naudoti kaip atskirą priklausomybės įpurškimo konteinerį, kuris neleidžia jūsų sistemoje įdiegti įmonės bibliotekos. „Unity Application Block“ projektavimo tikslai yra šie:

  1. Modulinio dizaino propagavimas atsiejus
  2. Pateikiama greita, išplečiama, lengvo svorio injekcijos talpykla
  3. Teikite išplėtimo palaikymą
  4. Teikti palaikymą įpurškiant pagal atributus
  5. Teikite intuityvios API palaikymą, kad galėtumėte prisijungti ir dirbti su priklausomybės įpurškimo talpykla

Darbo pradžia

Šiame skyriuje mes ištirsime, kaip mes galime pradėti naudoti „Unity“ programų bloką savo programose. Pirmasis žingsnis turėtų būti „Unity Application Block“ įdiegimas į jūsų sistemą. Lengviausias būdas įdiegti šią biblioteką yra per „NuGet“. Šioje iliustracijoje čia naudosime konsolės programos projektą. Norėdami sukurti pirmąją programą naudodami „Unity“ programų bloką, atlikite šiuos veiksmus:

  1. Atidarykite „Visual Studio IDE“
  2. Sukurkite konsolės projektą ir išsaugokite jį pavadinimu
  3. Dešiniuoju pelės mygtuku spustelėkite projektą „Solution Explorer“ lange
  4. Pasirinkite „Tvarkyti„ NuGet “paketus ...“
  5. Įdiekite „Unity NuGet“ paketų tvarkyklę

Tai viskas, ką jums reikia padaryti, kad nustatytumėte, kada pradėti naudoti „Unity“. Dabar esate pasirengę naudoti „Unity Application Block“ savo projekte.

Objekto priklausomybių kūrimas ir sprendimas naudojant „Unity“ konteinerį

„Unity“ talpyklą galite lengvai išspręsti priklausomybes nuo konkretaus objekto, kaip parodyta toliau pateiktame kodo fragmente.

„IUnityContainer“ konteineris = naujas „UnityContainer“ ();

container.RegisterType ();

container.RegisterType ();

Kai užregistruojate objekto tipą „Unity“ talpykloje, galite nurodyti jų tarnavimo laiką. Jei nenurodote, naudojamas numatytasis gyvenimo laikas. Viso laikotarpio valdytojas kontroliuoja registruoto objekto tarnavimo laiką. „Unity Application Block“ palaikomi viso gyvenimo valdytojų tipai yra: „TransientLifetimeManager“, „ContainerControlledLifetimeManager“, „HierarchicalLifetimeManager“, „PerThreadLifetimeManager“ ir „ExternallyControlledLifetimeManager“.

Apsvarstykite šią sąsają, vadinamą ILogger.

viešoji sąsaja ILogger

   {

eilutė „GetLogTypeName“);

   }

„ILogger“ sąsajoje yra vieno metodo, pavadinto „GetLogTypeName ()“ deklaracija. „FileLoger“, „DatabaseLogger“ ir „EventLogger“ klasės (pateiktos žemiau) įgyvendina „ILogger“ sąsają.

viešoji klasė FileLogger: ILogger

   {

viešoji eilutė „GetLogTypeName“ ()

       {

grąžinti „File Logger“;

       }

   }

viešosios klasės duomenų bazė „Logger“: „ILogger“

   {

viešoji eilutė „GetLogTypeName“ ()

       {

grąžinti „Database Logger“;

       }

   }

viešoji klasė „EventLogger“: „ILogger“

   {

viešoji eilutė „GetLogTypeName“ ()

       {

grąžinti „Event Logger“;

       }

   }

Šis kodų sąrašas parodo, kaip galite išspręsti priklausomybes naudodami „UnityContainer“.

static void Main (string [] args)

{

„IUnityContainer“ konteineris = naujas „UnityContainer“ ();

container.RegisterType ();

ILogger iLogger = konteineris.Resolve ();

eilutė logType = iLogger.GetLogTypeName ();

Console.WriteLine (logType);

Pultas.Skaitykite ();

}

Atkreipkite dėmesį, kad „Konteineris“ „Unity Application Block“ yra objektas, kurį galima naudoti kuriant ir įvedant priklausomybes. Naudodami „RegisterType“ metodą, galite registruoti tipus arba tipų susiejimus „Unity“ talpykloje. „Resolve“) metodas naudojamas grąžinti konkretų tipo egzempliorių, kuris yra užregistruotas bendram tipui, minėtam naudojant T. Pirmiau pateiktame kodo pavyzdyje metodas Resolve () grąžins „FileLogger“ klasės egzempliorių.

Alternatyvus būdas „Unity“ integracijai nurodyti yra konfigūravimas. Darant prielaidą, kad „Unity“ konfigūracijoje nurodėte konteinerį pavadinimu „Konteineris“, šis kodo fragmentas parodo, kaip galite iškviesti „LoadConfiguration“ metodą konteinerio egzemplioriuje savo kode.

string containerName = "Konteineris";

„IUnityContainer“ konteineris = naujas „UnityContainer“ (). „LoadConfiguration“ („containerName“);

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