Tehnologia Class Library

În cele două părți anterioare ale acestui articol am început familiarizarea cu Microsoft .NET Framework - o componentă cheie a Microsoft .NET, este o platformă pentru crearea, implementarea și performanța Web-servicii și aplicații. Am vorbit despre componentele de bază ale Microsoft .NET Framework și descrie pe scurt scopul lor. Am început, de asemenea, o analiză mai detaliată a Common Language Runtime (CLR) - performanță de mediu .NET-aplicație. Am finalizat familiaritatea cu povestea Common Language Runtime a sistemului tip comun.

În această problemă, vom începe cunoștință cu biblioteca de clasă, uita-te la componentele principale ale namespace și clasele sale și să dea câteva exemple de utilizare a acestora.

.NET Framework Class Library clasa biblioteca conține clase care oferă următoarele funcții:

  • susținerea tipuri de bază și definite de utilizator;
  • sprijin pentru manipulare excepție;
  • operație I operație / O cu fluxuri;
  • face apel la funcțiile sistemului de operare;
  • accesul la date;
  • abilitatea de a crea aplicații bazate pe Windows;
  • capacitatea de a crea client și server aplicații bazate pe Web;
  • capacitatea de a crea servicii web.

Toate clasele implementate în Class Library .NET Framework sunt organizate într-un spațiu de nume (namespace). Fiecare spațiu de nume conține clase și alte tipuri de care aparțin unei sarcini sau a unui grup specific de sarcini - I / O operațiuni, crearea de aplicatii bazate pe web de lucru cu date și XML-documente, etc. Tabelul de mai jos prezintă cel mai important spațiul de nume din biblioteca de clase .NET.

După o scurtă trecere în revistă a principalelor namespace suntem gata să procedeze la o examinare mai detaliată a bibliotecii de clasă .NET. Prima oprire în călătoria noastră nu este destul de normal - în loc de luarea în considerare a obiectului tradițional clasa de baza, care este strămoșul tuturor claselor din biblioteca de clase .NET, ne vom uita la aplicațiile de clasă consolă și consola. De ce facem acest lucru, va fi clar mai târziu.

Consola de clasă și aplicații consolă

Folosind clasa System.Console, putem crea aplicații simple pentru mediul .NET - aplicatii consola care utilizează fereastra de sistem de intrare și de ieșire de informații și nu necesită o interfață grafică de utilizator. Deoarece cele mai multe dintre exemplele din această serie va folosi o aplicație consolă, vom începe cunoștință noastră cu clasele cu biblioteca de clasă consolă.

Utilizarea Visual Basic .NET, vom crea o aplicație consolă ca un nou modul care conține o subrutină numit principal - acesta este punctul de intrare în aplicația noastră consolă:

Metode Citiți și READLINE servesc pentru a citi unul sau mai multe caractere sau NEWLINE de la stdin și metode scrie și WriteLine - pentru a afișa una sau mai multe caractere sau linie cu un nou simbol linie în ieșirea standard.

Metode Setin, SetError și permite trasat să suprascrie standard de intrare, ieșire și eroarea. Aceste metode se așteaptă un argument de tip textier, care descrie fluxul de.

Acum suntem pe deplin pregătiți pentru a începe studiul Microsoft .NET Class Library. În secțiunea următoare ne vom uita la spațiul de nume de sistem și spațiile de nume copil ale acestuia.

Sistemul namespace

Spațiu de nume de sistem este spațiul de nume rădăcină în .NET Class Library Microsoft și conține tipuri de date de bază implementate în .NET Framework. Acest spațiu de nume conține obiect de clasă, care este strămoșul tuturor claselor din biblioteca de clase .NET, tipuri primitive și avansate, precum și peste 100 de clase suplimentare utilizate pentru manipularea excepție, domenii de aplicare de control, de colectare a gunoiului, etc.

clasă de obiecte

clasa System.Object este strămoșul tuturor claselor din biblioteca de clase .NET. Metodele puse în aplicare în această clasă sunt prezentate în figura de mai jos.

Să luăm în considerare pe scurt fiecare dintre aceste metode:

  • Metoda Egali (Object) sau Rezultat (Object, Object) - este folosit pentru a verifica dacă cele două obiecte sunt aceeași instanță. Pentru date cu valorile acestei metode este suprascrisă (în clasa valuetype) și vă permite să verifice identitatea valorilor memorate ale instanțelor de obiecte. Notă: atunci când comparăm două tipuri de referință, metoda verifică dacă este egală cu cele două copii sunt identice; date cu valorile metodei verifică de asemenea Rezultat datele de identificare stocate instanțe obiect.
  • Metoda ReferenceEquals (Object, Object) verifică dacă cele două obiecte sunt aceeași instanță.
  • implicit Definitivarea metoda () nu face nimic. Această metodă poate fi înlocuită în clasa derivată pentru a efectua memoria finală de purificare înainte de mecanismul de colectare a gunoiului (colector gunoiului) distruge obiectul.
  • GetHashCode () metoda este utilizată pentru a genera valori hash (tip Integer), care pot fi utilizate pentru depozitarea obiectelor în tabelele hash.
  • MemberwiseClone () metoda creează o copie exactă a obiectului.
  • Metoda ToString () returnează o reprezentare textuală a obiectului. În cele mai multe cazuri, această metodă returnează numele clasei complet calificat pentru obiect.
  • Gettype () returneaza un obiect de tip pentru această instanță.

Mai jos vom explica modul în care să utilizați tipul de clasă.

Clasa de tip și de spațiu de nume de reflecție

Clasa Type este punctul nostru de intrare în numele spațiu de reflecție. Reflection (reflecție) în ceea ce privește .NET - este abilitatea de a studia posibilitatea de clase în timpul rulării. Folosind reflecție, putem extrage clasele lor de a învăța metode, proprietăți, constructori, terenuri, evenimente și alți membri, într-un cuvânt, vom avea acces la metadatele asociate cu clasa.

Clasa conține metode de tip GetMethods tip () și GetProperties (), care pot fi utilizate pentru a obține informații cu privire la membrul clasei. Utilizarea claselor implementate în reflecție spațiu de nume, putem obține informații, de exemplu, metodele de parametri (folosind clasa System.Reflection. MethodInfo), și chiar metode de apel folosind metoda Invoke ().

Următorul exemplu arată cum să începeți utilizarea mecanismului de reflecție. Codul de mai jos arată cum se utilizează metoda gettype () pentru a obține tipul de obiect și de modul de utilizare a unui număr de proprietăți ale obiectului:

O scurtă privire la caracteristicile de bază oferite de reflecție spațiu de nume, și apoi ilustrează câteva exemple.

  • Adunarea de clasă pot fi utilizate pentru determinarea și ansambluri de încărcare, module de încărcare ale manifestului de asamblare (asamblare manifest), căutarea de tipul celor descrise în ansamblul și de a crea instanțe ale acestor tipuri.
  • Modul de clasă pot fi folosite pentru a căuta clase în modulul, precum și toate metodele globale și locale definite în acest modul.
  • clasa ConstructorInfo pot fi folosite pentru a căuta nume, parametri, modificatori de acces, precum și alte informații despre proiectantul. Găsirea și apelarea unui constructor, putem efectua cu ajutorul GetConstructors () sau GetConstructor () tipului de obiect.
  • Clasa MethodInfo utilizate pentru căutare pentru nume, tipuri de returnare, parametri, modificatori de acces, precum și alte informații despre metoda. Găsirea și apelarea unor metode, putem efectua cu ajutorul GetMethods () sau GetMethod () tipului de obiect.
  • Pentru a căuta informații despre domeniile - numele, modificatori de acces, etc. - FieldInfo clasa utilizate. În plus, cu această clasă putem obține și setați valorile câmpurilor.
  • Clasa EventInfo utilizate pentru căutare pentru nume, manipulare eveniment, tipuri de date, precum și alte informații despre eveniment. Această clasă vă permite să adăugați și să eliminați manipulare eveniment.
  • Clasa PropertyInfo utilizate pentru căutare pentru nume, tipuri de date, precum și alte informații despre proprietățile. Cu această clasă, de asemenea, putem obține și a stabilit valori de proprietate.
  • Clasa ParameterInfo utilizat pentru a căuta informații despre parametrii - numele, tipul de date, etc.

Următorul exemplu arată cum se obține o listă de tipuri definite în acest modul.

Codul de mai jos arată ieșirea de informații:

După cum se poate observa din lista de mai sus, întregul concept este similar cu utilizarea reflexii ITypeLibrary interfață Win32 API pentru studiul de biblioteci de tip, dar versiunea de .NET oferă mai multe caracteristici, mai ușor de utilizat și mai prietenos la o varietate de limbaje de programare.

Acum ne extindem exemplul nostru și să adăugați informații despre proprietățile, constructori, metode, interfețe și evenimente. Pentru aceasta utilizați GetProperties metode (), GetConstructors (), GetMethods (), GetInterfaces () și GetEvents () Tip obiect. Fiecare dintre aceste metode returnează o matrice de elemente de tip PropertyInfo, MethodInfo, EventInfo etc. - fiecare tip moștenește de tip abstract MemberInfo, pe care le folosim în exemplul nostru. Singura excepție este de tip PropertyInfo - acest tip este utilizat pentru a obține informații suplimentare cu privire la proprietățile:

Următoarele arată ieșire pentru clasele noastre exemplu System.Array:

Rețineți că parametrii metoda nu sunt titluri - în lista arată numai tipurile de date. Pentru a obține mai multe informații despre parametrii metodelor ar trebui să folosim o metodă GetParameters () și structura ParameterInfo. Cum de a face acest lucru este prezentat mai jos:

Acum știm numele parametrului și tipul:

Pentru a avea acces la ansamblul (în exemplul nostru, am utilizat construi implicit (- mscorlib.dll) este întotdeauna încărcat în memorie), este necesar să se abordeze această adunare. Iată cum se face:

După ce vom avea acces la modulul, putem învăța fie anumite tipuri de ea (cum să facă acest lucru, în primul exemplu), sau pentru a obține informații cu privire la tipul de interes pentru noi.

În numărul următor vom continua cunoștință cu clasele Biblioteca .NET Framework Class Library. Ne vom uita la matrice (clasa de System.Array) și colecții (System.Collections spațiu de nume).

articole similare