Se TheAgileDeveloper.Client projektet Reference.vb fil. Det är när du importerar en webbreferens ContactService skapat av wsdl.exe. Det genererar automatiskt följande kontaktklasser från WSDL.
'<remarks/>
<System.Xml.Serialization.XmlTypeAttribute (_
[Namespace]: = http://. . . . . / TheAgileDeveloper.ContactService/Service1 _)> _Public class Kontakt
'<remarks/>
Public Id As Integer
'<remarks/>
Public Firstname As String
'<remarks/>
Public EfterNamn As String
'<remarks/>
Allmän webbplats As String
End Class
Observera, hanterar Kontakt objekt endast uppgifter, men vi vill inte på något sätt att redigera koden eftersom wsdl.exe kommer automatiskt generera för oss, så att förändringarna kommer att gå förlorade när nästa generation. Jag vill presentera beteende, så det kan spara objektet genom att anropa en metod som kallas Spara som lätt uppnås genom en blandning. Multipelt arv är blandad med en replik, men den har begränsningar, som endast blandad gränssnitt. Innesluta ramen vi använder innehåller en Encaser klass, som är ansvarig för att ta emot och förpacka ett föremål. Beteende wrapper-objekt är faktiskt tänkt att skapa ett nytt objekt, i det här fallet är det nya Kontakt-objekt som innehåller blandad och skär-punkt-konfiguration.
För att skapa rätt att kalla Spara metoden på Kontakt föremål blandas in, måste du ange ett gränssnitt, jag kallar ISavable. Själva objektet är blandad ISavable gränssnitt. Vi behöver genomföra gränssnittet i en ny klass som heter ContactSave i en annan.
Public Interface ISaveable
Sub Spara ()
End Interface
Public class ContactSave
Redskap ISavable
Offentlig Kontakta Som ContactService.Contact
Public Sub Spara () Redskap ISavable.Save
ServiceManager.SaveContact (Me.Contact)
End Sub
End Class
I vår applikation, placera objektet ContactSave blandade Kontakt inser är ServiceManager. Vi kan blanda detta beteende, men ändrar inte någon klient-kod (dvs. MainForm), eftersom ansökan mix, kombinerat med Kontakt och ContactSave nya Kontakt objekt kvarstår som den ursprungliga Kontakttyp. Följande kod är resultatet av GetAllContacts ServiceManager tillvägagångssätt för att ändra, och det hanterar blandat beteende.
Public Shared Function GetAllContacts () As ContactService.Contact ()
Dim tjänsten Som ContactService.Service = Ny ContactService.Service
Dim kontakter () Som ContactService.Contact = service.GetAllContacts
|