Se TheAgileDeveloper.Client projekt Reference.vb fil. Det er, når du importerer en Web henvisning ContactService skabt af wsdl.exe. Det genererer automatisk følgende kontaktoplysninger klasser fra WSDL.
'<remarks/>
<System.Xml.Serialization.XmlTypeAttribute (_
[Navnerum]: = http://. . . . . / TheAgileDeveloper.ContactService/Service1 _)> _Offentlig Class Kontakt
'<remarks/>
Public Id As Integer
'<remarks/>
Public Fornavn As String
'<remarks/>
Public Efternavn As String
'<remarks/>
Offentlige websted As String
End Class
Bemærk, håndtag Kontakt objekt kun data, men vi ønsker ikke på nogen måde at redigere kode, fordi wsdl.exe automatisk vil generere for os, så ændringerne går tabt, når den næste generation. Jeg ønsker at indføre adfærd, så det kan spare objektet ved at kalde en metode kaldet Save, som er let opnået gennem en blanding. Multipel arv er blandet med en kopi, men det har begrænsninger, som f.eks kun blandet interface. Indramme rammer, vi bruger indeholder en Encaser klasse, som er ansvarlig for at modtage og pakke et objekt. Behavior wrapper objekt er faktisk beregnet til at oprette et nyt objekt, i dette tilfælde, er den nye Contact objekt, der indeholder blandet og cut-point konfiguration.
At skabe mulighed for at ringe til Spar-metoden på Kontakt objekter blandet i, skal du angive en grænseflade, jeg kalder ISavable. Det faktiske formål er blandet ISavable interface. Vi er nødt til at gennemføre grænsefladen i en ny klasse kaldet ContactSave i en anden.
Public interface ISaveable
Sub Gem ()
End interface
Public Class ContactSave
Gennemfører ISavable
Offentlig Kontakt Som ContactService.Contact
Public Sub Gem () Gennemfører ISavable.Save
ServiceManager.SaveContact (Me.Contact)
End Sub
End Class
I vores ansøgning, placere objektet ContactSave blandet Kontakt indser er Servicechef. Vi kan blande denne adfærd, men det ændrer ikke noget klient kode (dvs. MainForm), fordi ansøgningen mix kombineret med Kontakt og ContactSave ny Kontakt objekt forbliver som den oprindelige Contact type. Følgende kode er resultatet af GetAllContacts Servicechef tilgang til at ændre, og det håndterer blandet adfærd.
Offentlige Delt Funktion GetAllContacts () As ContactService.Contact ()
Dim tjeneste Som ContactService.Service = Ny ContactService.Service
Dim kontakter () Som ContactService.Contact = service.GetAllContacts
|