2009-06-15 19 views
1

Ich habe Haufen von Klassen erstellt. Ich habe Webservices, die auf diese Klassen verweisen und die Klassen als Parameter und Rückgabeobjekte enthalten.Typ Umwandlung von Webservice-Objekt zu Klassenobjekt

Wenn ich den Service anrufe, muss ich die Klasse in das Webservice-Objekt konvertieren, sonst kann ich einen Konvertierungsfehler eingeben.

Gibt es eine generische Möglichkeit, zwischen diesen Typen zu konvertieren, ohne die Werte manuell zuweisen zu müssen?

zum Beispiel

public class person 
fname as string 
lname as string 
end class 

Web-Service-Methode

public getperson() as person 
return new person() 
end sub 

im Client

dim ws as new webservice 

dim person = ws.getperson 

ich würde liek Lage ot sein, um die Web-Service aufrufen und den Datentyp wieder zurück und haben eine generische Abdeckung statt wie oben anstelle von:

dim wsPerson as wsReference.Person = ws.getperson() 

dank

Antwort

1

Da die generierte Proxy-Klasse für eine Web-Referenz eine Kopie der Schnittstelle der exponierten Klasse ist, sollten Sie in der Lage sein, Reflektion verwendet solche Umwandlungen zu tun.

Wenn Ihre Klassen jedoch nicht sehr groß oder zahlreich sind, würde ich vorschlagen, manuell einen Konverter zu erstellen, der die Konvertierung von Webservice-Klassentypen in "interne" Klassentypen und umgekehrt durchführt. Wenn die Anzahl der Klassen groß ist und wenn regelmäßig neue Klassen hinzugefügt werden oder deren Design geändert wird, würde ich versuchen, eine Art Codegenerator zu erstellen, der die Konverterfunktionalität für Sie erstellt.

1

Einige der erweiterten Funktionen sind schwer von vb.net zu verwenden, aber AutoMapper wird die grundlegende Übersetzung von Person zu Person Klassen nett für Sie tun.