Clasele parțiale sunt o caracteristică a VB.NET care este folosită aproape peste tot, dar nu există prea multe despre asta. Acest lucru se poate întâmpla deoarece nu există încă o mulțime de aplicații „dezvoltatoare” evidente pentru aceasta. Utilizarea principală este modul în care soluțiile ASP.NET și VB.NET sunt create în Visual Studio unde este una dintre acele funcții care este în mod normal „ascunsă”.
O clasă parțială este pur și simplu o definiție a clasei care este împărțită în mai multe fișiere fizice. Clasele parțiale nu fac diferența cu compilatorul, deoarece toate fișierele care alcătuiesc o clasă sunt pur și simplu îmbinate într-o singură entitate pentru compilator. Deoarece clasele sunt doar combinate și compilate, nu puteți amesteca limbile. Adică nu poți avea o clasă parțială în C # și alta în VB. Nu puteți extinde asamblări cu clase parțiale. Toți trebuie să fie în aceeași adunare.
Aceasta este folosită mult de Visual Studio în sine, în special în paginile web unde este un concept cheie în fișierele „cod în spatele”. Vom vedea cum funcționează acest lucru într-un Visual Studio, dar înțelegerea ce s-a schimbat în Visual Studio 2005 când a fost introdus este un bun punct de plecare.
În Visual Studio 2003, codul „ascuns” pentru o aplicație Windows se găsea într-o secțiune numită Regiune marcată „Windows Form Designer generat cod”. Dar era tot acolo în același fișier și era ușor de vizualizat și de schimbat codul din regiune. Toate a codului este disponibil pentru aplicația dvs. în .NET. Dar din moment ce o parte din acesta este codul pe care ar trebui
În Visual Studio 2005 (Framework 2.0), Microsoft a făcut aproximativ același lucru, dar au ascuns codul într-un loc diferit: o clasă parțială într-un fișier separat. Puteți vedea acest lucru în partea de jos a ilustrației de mai jos:
Faceți clic aici pentru a afișa ilustrația
Faceți clic pe butonul Înapoi din browser pentru a vă întoarce
Una dintre diferențele de sintaxă dintre Visual Basic și C # în acest moment este aceea că C # necesită asta toate clasele parțiale să fie calificate cu cuvântul cheie Parțial dar VB nu. Formularul dvs. principal din VB.NET nu are calificative speciale. Dar declarația de clasă implicită pentru o aplicație Windows goală arată astfel folosind C #:
public parțial clasa Form1: Form
Opțiunile de design ale Microsoft pe chestii de genul acesta sunt interesante. Când Paul Vick, designerul VB Microsoft, a scris despre această alegere de design în blogul său Panopticon Central, dezbaterea despre aceasta în comentarii a continuat pentru pagini și pagini.
Vă rugăm să vedeți cum funcționează toate acestea cu un cod real în pagina următoare.
În pagina anterioară, a fost explicat conceptul de clase parțiale. Convertim o singură clasă în două clase parțiale din această pagină.
Iată o clasă de exemplu cu o metodă și o proprietate într-un proiect VB.NET
Clasa publică combinată. Privat m_Property1 As String. Sub public nou (ByVal Value As String) m_Property1 = Value. Sub final. Submetodă publică1 () MessageBox. Afișează (m_Property1) End Sub. Proprietate proprietate1 () ca șir. Obține. Returnare m_Property1. Încheiați. Setați (valoarea ByVal As String) m_Property1 = valoare. Set final. Proprietate finală. Clasa finală
Această clasă poate fi numită (de exemplu, în codul de eveniment Click pentru un obiect Button) cu codul:
Dim ClassInstance ca nou _. CombinedClass („Despre clasele parțiale vizuale de bază”) ClassInstance. Metoda 1 ()
Putem separa proprietățile și metodele clasei în fișiere fizice diferite adăugând două noi fișiere de clasă la proiect. Denumiți primul fișier fizic Partial.methods.vb și numește-l pe cel de-al doilea Partial.properties.vb. Numele fișierelor fizice trebuie să fie diferite, dar numele clasei parțiale vor fi aceleași, astfel încât Visual Basic le poate contopi atunci când codul este compilat.
Nu este o cerință de sintaxă, dar majoritatea programatorilor urmează exemplul din Visual Studio de a utiliza nume „punctate” pentru aceste clase. De exemplu, Visual Studio utilizează numele implicit Form1.Designer.vb pentru clasa parțială pentru un formular Windows. Nu uitați să adăugați cuvântul cheie parțial pentru fiecare clasă și să schimbați numele clasei interne (nu numele fișierului) cu același nume. Am folosit numele clasei interne: PartialClass.
Ilustrația de mai jos arată tot codul pentru exemplu și codul în acțiune.
Faceți clic aici pentru a afișa ilustrația
Faceți clic pe butonul Înapoi din browser pentru a vă întoarce
Visual Studio „ascunde” clase parțiale, cum ar fi Form1.Designer.vb. În pagina următoare, vom învăța cum să facem asta cu orele parțiale pe care tocmai le-am creat.
Paginile anterioare explică conceptul de clase parțiale și arată modul de codare a acestora. Dar Microsoft folosește încă un truc cu clasele parțiale generate de Visual Studio. Unul dintre motivele pentru care le folosești este să separi logica aplicației de codul UI (interfață de utilizator). Într-un proiect mare, aceste două tipuri de cod pot fi chiar create de echipe diferite. Dacă sunt în fișiere diferite, pot fi create și actualizate cu mult mai multă flexibilitate. Însă Microsoft face încă un pas și ascunde și codul parțial în Solutorul Explorator. Să presupunem că am vrut să ascundem metodele și proprietățile clase parțiale din acest proiect? Există un mod, dar nu este evident și Microsoft nu vă spune cum.
Unul dintre motivele pentru care nu vedeți utilizarea unor clase parțiale recomandate de Microsoft este faptul că nu este încă acceptat foarte bine în Visual Studio. Pentru a ascunde clasele Partial.methods.vb și Partial.properties.vb pe care tocmai le-am creat, de exemplu, necesită o schimbare în vbproj fişier. Acesta este un fișier XML care nici măcar nu este afișat în Solutorul Explorer. Îl puteți găsi cu Windows Explorer împreună cu celelalte fișiere. Un fișier vbproj este prezentat în ilustrația de mai jos.
Faceți clic aici pentru a afișa ilustrația
Faceți clic pe butonul Înapoi din browser pentru a vă întoarce
Modul în care vom face acest lucru este să adăugăm o clasă „rădăcină” care este complet goală (rămân doar antetul clasei și instrucțiunea Clasa finală) și să facem ambele clase parțiale dependente de ea. Așa că adăugați o altă clasă numită PartialClassRoot.vb și din nou schimbați numele intern în PartialClass pentru a se potrivi cu primele două. De data asta, am nu a folosit cuvântul cheie parțial doar pentru a se potrivi cu modul în care Visual Studio îl face.
Iată că o mică cunoaștere a XML va veni foarte la îndemână. Deoarece acest fișier va trebui să fie actualizat manual, trebuie să obțineți sintaxa XML corectă. Puteți edita fișierul în orice editor de text ASCII - Notepad funcționează bine - sau într-un editor XML. Se dovedește că aveți unul excelent în Visual Studio și asta este ilustrat în ilustrația de mai jos. Dar nu puteți edita fișierul vbproj în același timp în care editați proiectul în care este. Așa că închideți proiectul și deschideți doar fișierul vbproj. Ar trebui să vedeți fișierul afișat în fereastra de editare, așa cum se arată în ilustrația de mai jos.
(Notați Compila elemente pentru fiecare clasă. DependentUpon subelementele trebuie adăugate exact așa cum se arată în ilustrația de mai jos. Această ilustrație a fost creată în VB 2005, dar a fost testată și în VB 2008.)
Faceți clic aici pentru a afișa ilustrația
Faceți clic pe butonul Înapoi din browser pentru a vă întoarce
Pentru mulți dintre noi, este suficient să știm că orele parțiale sunt acolo, doar așa știm ce sunt atunci când încercăm să urmărim o eroare pe viitor. Pentru dezvoltarea sistemelor mari și complexe, acestea ar putea fi un mic miracol, deoarece pot ajuta la organizarea codului în moduri care ar fi fost imposibile până acum. (Puteți avea, de asemenea, structuri parțiale și interfețe parțiale!) Dar unii oameni au ajuns la concluzia că Microsoft le-a inventat doar din motive interne - pentru ca generarea de coduri să funcționeze mai bine. Autorul Paul Kimmel chiar a mers până a sugerat că Microsoft a creat de fapt clase parțiale pentru a-și reduce costurile, făcând mai ușor externalizarea lucrărilor de dezvoltare în întreaga lume.
Poate. Este genul de lucruri pe care le-ar putea face.