Partial Classes er en funksjon av VB.NET som brukes nesten overalt, men det er ikke mye skrevet om det. Dette kan være fordi det ikke er mange åpenbare "utvikler" -applikasjoner for det ennå. Den primære bruken er i måten ASP.NET og VB.NET-løsninger er opprettet i Visual Studio, hvor det er en av disse funksjonene som normalt er "skjult".
En delklasse er ganske enkelt en klassedefinisjon som er delt inn i mer enn en fysisk fil. Delklasser gjør ingen forskjell for kompilatoren fordi alle filene som utgjør en klasse ganske enkelt blir slått sammen til en enhet for kompilatoren. Siden klassene bare er slått sammen og satt sammen, kan du ikke blande språk. Det vil si at du ikke kan ha en delklasse i C # og en annen i VB. Du kan heller ikke spenne over samlinger med delklasser. De må alle være i samme forsamling.
Dette brukes mye av Visual Studio selv, spesielt på websider der det er et nøkkelbegrep i "kode bak" filer. Vi får se hvordan dette fungerer i et Visual Studio, men å forstå hva som endret seg i Visual Studio 2005 da det ble introdusert, er et godt utgangspunkt.
I Visual Studio 2003 var den "skjulte" koden for en Windows-applikasjon alt i en seksjon kalt et område merket "Windows Form Designer generert kode". Men det var fremdeles alt der i den samme filen, og det var lett å se og endre koden i regionen. Alle av koden er tilgjengelig for applikasjonen din i .NET. Men siden noe av det er kode du bør
I Visual Studio 2005 (Framework 2.0) gjorde Microsoft omtrent det samme, men de gjemte koden på et annet sted: en delklasse i en egen fil. Du kan se dette nederst i illustrasjonen nedenfor:
Klikk her for å vise illustrasjonen
Klikk på Tilbake-knappen i nettleseren for å gå tilbake
En av syntaksforskjellene mellom Visual Basic og C # akkurat nå er at C # krever det alle delklasser være kvalifisert med nøkkelordet Delvis men VB gjør det ikke. Din hovedform i VB.NET har ingen spesielle kvalifiseringskvoter. Men standardklassen for en tom Windows-applikasjon ser slik ut ved å bruke C #:
offentlig delklasse Form1: Form
Microsofts designvalg på ting som dette er interessante. Da Paul Vick, Microsofts VB-designer, skrev om dette designvalget i bloggen sin Panopticon Central, debatten om det i kommentarene gikk på sider og sider.
La oss se hvordan alt dette fungerer med ekte kode på neste side.
På forrige side ble begrepet delklasser forklart. Vi konverterer en enkelt klasse til to delklasser på denne siden.
Her er en eksempelklasse med en metode og en egenskap i et VB.NET-prosjekt
Public Class CombinedClass. Privat m_Property1 As String. Public Sub New (ByVal Value As String) m_Property1 = Verdi. Slutt sub. Public Sub Method1 () MessageBox. Vis (m_Property1) Slutt sub. Eiendom Eiendom1 () Som streng. Få. Returner m_Property1. Slutt Get. Sett (byVal-verdi som streng) m_Property1 = verdi. Slutt sett. Slutteiendom. Sluttklasse
Denne klassen kan kalles (for eksempel i Click-hendelseskoden for et knapp-objekt) med koden:
Dim ClassInstance As New _. CombinedClass ("Om Visual Basic delklasser") ClassInstance. Method1 ()
Vi kan dele egenskapene og metodene til klassen i forskjellige fysiske filer ved å legge til to nye klassefiler til prosjektet. Gi den første fysiske filen navn Partial.methods.vb og gi den andre navnet Partial.properties.vb. De fysiske filnavnene må være forskjellige, men delklassens navn vil være de samme slik at Visual Basic kan slå dem sammen når koden er satt sammen.
Det er ikke et syntaksbehov, men de fleste programmerere følger eksemplet i Visual Studio om å bruke "prikkete" navn for disse klassene. Visual Studio bruker for eksempel standardnavnet Form1.Designer.vb for delklassen for et Windows-skjema. Husk å legge til delvis nøkkelord for hver klasse og endre det interne klassens navn (ikke filnavnet) til samme navn. Jeg brukte det interne klassens navn: PartialClass.
Illustrasjonen nedenfor viser all koden for eksemplet og koden i handling.
Klikk her for å vise illustrasjonen
Klikk på Tilbake-knappen i nettleseren for å gå tilbake
Visual Studio "skjuler" delklasser som Form1.Designer.vb. På neste side lærer vi hvordan du gjør det med delklasser vi nettopp opprettet.
De forrige sidene forklarer begrepet delklasser og viser hvordan du kan kode dem. Men Microsoft bruker ett triks til med delklasser generert av Visual Studio. En av grunnene til å bruke dem er å skille applikasjonslogikk fra UI-kode (brukergrensesnitt). I et stort prosjekt kan disse to kodetypene til og med opprettes av forskjellige team. Hvis de er i forskjellige filer, kan de opprettes og oppdateres med mye mer fleksibilitet. Men Microsoft går et skritt til og skjuler den delvise koden i Solution Explorer også. Anta at vi ønsket å skjule metodene og egenskapene delklasser i dette prosjektet? Det er en måte, men det er ikke åpenbart og Microsoft forteller deg ikke hvordan.
En av grunnene til at du ikke ser bruken av delklasser som anbefales av Microsoft, er at den ikke egentlig støttes veldig godt i Visual Studio ennå. For å skjule Partial.methods.vb og Partial.properties.vb klassene som vi nettopp opprettet, for eksempel, krever en endring i vbproj fil. Dette er en XML-fil som vises ikke engang i Solution Explorer. Du kan finne den med Windows Utforsker sammen med andre filer. En vbproj-fil vises på illustrasjonen nedenfor.
Klikk her for å vise illustrasjonen
Klikk på Tilbake-knappen i nettleseren for å gå tilbake
Måten vi skal gjøre dette på er å legge til en "rot" -klasse som er helt tom (bare klassens topptekst og sluttklassen er igjen) og gjøre begge delklassene våre avhengige av den. Så legg til en annen klasse som heter PartialClassRoot.vb og endre det interne navnet til PartialClass igjen for å matche de to første. Denne gangen har jeg det ikke brukte delvis nøkkelord bare for å matche måten Visual Studio gjør det.
Her er litt kunnskap om XML veldig praktisk. Siden denne filen må oppdateres manuelt, må du få XML-syntaks riktig. Du kan redigere filen i en hvilken som helst ASCII-tekstredigerer - Notisblokk fungerer helt fint - eller i en XML-redigerer. Det viser seg at du har en flott i Visual Studio, og det er det som vises på illustrasjonen nedenfor. Men du kan ikke redigere vbproj-filen samtidig som du redigerer prosjektet den er i. Så lukk prosjektet og åpne bare vbproj-filen. Du skal se filen vises i redigeringsvinduet som vist på illustrasjonen nedenfor.
(Legg merke til Kompilere elementer for hver klasse. Avhengig av underelementer må legges til nøyaktig som vist på illustrasjonen nedenfor. Denne illustrasjonen ble laget i VB 2005, men den er også testet i VB 2008.)
Klikk her for å vise illustrasjonen
Klikk på Tilbake-knappen i nettleseren for å gå tilbake
For mange av oss er det nok nok å vite at delklasser er der, bare så vi vet hva de er når vi prøver å spore opp en feil i fremtiden. For stor og kompleks systemutvikling kan de være et lite mirakel fordi de kan hjelpe med å organisere kode på måter som hadde vært umulig før. (Du kan også ha delvise strukturer og delvise grensesnitt!) Men noen mennesker har konkludert med at Microsoft oppfant dem bare av interne grunner - for å gjøre kodegenerasjonen deres bedre. Forfatter Paul Kimmel gikk til og med så langt som å antyde at Microsoft faktisk opprettet delklasser for å senke kostnadene ved å gjøre det lettere å outsource utviklingsarbeid over hele verden.
Kan være. Det er den slags ting de kan gjøre.