Webservice Objekt in lokales objekt mit gleicher DLL übergeben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Hallo

    Das geht so nicht da es ja ein anderes Objekt ist. Warum sollte man das auch machen wollen?
    Vielleicht erklärst du einfach mal nicht was das Problem ist sondern was du vor hast. Wozu willst du sowas machen?

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo Sasha

    Der Hintergrund ist dass ich eine DB auf einem Server habe. Wir arbeiten in der Firma via ThinCLients und diese sind von Externnicht erreichbar. Es gibt einen Teil der SOftware welche ich herstelle als Offline version. Sobald der Laptop oder Tablet eine Internetverbindung hat soll er diese Daten auf den Server übertragen. und evtl neue Daten welche im Büro erfasst uwrden abfragen.
    Ja..... OK

    ​Aber was hat das damit zu tun das du aus einem Objekt vom Typ XYZ ein Objekt vom Typ ZYX machen willst.
    ​Was bringt dir das oder besser gesagt, WARUM willst du das machen. Was kann die eine Klasse was die andere nicht kann, wenn du ja sagst das die gleich sind?
    Warum passt dir die Klasse aus dem Webservice nicht??

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo Sasha.

    Ich muss ja die dann die ganzen Propertys alle zu Fus zuweisen. Die Klasse des Webservices kann man nicht in der lokalen DB speichern oder?

    Romed schrieb:

    Die Klasse des Webservices kann man nicht in der lokalen DB speichern oder?


    Wow, nach Post#24 sagst du uns was du willst. Schau mal durch, davon war nie die Rede das du Lokal in eine DB alle Werte speichern willst. 8|
    Es kommt ganz darauf an wie du in die DB speichern willst. Verwendest du EntityFramework, NHibernate oder ähnliche OR Mapper?
    Eigendlich sollte der Titel dieser Beitrags wohl "wie speichere ich Daten in eine Datenbank" lauten.

    Du speicherst ja im Webservice auch oder? Hier geht's genauso.
    Ich gehe plumt davon aus das du normal speicherst, also mittels SQL String. Diesen kannst du doch auch ganz normal zusammensetzen wie immer egal aus welcher Klasse.

    Wenn du es WIRKLICH unbedingt so machen willst das du die Klassenproperties "kopierst" dann wie schon gesagt über Reflection.
    Brauchst du in einer ForEach Schleife alle Properties und deren Values durchgehen.

    Hier eine ObjektExtension welche sowas macht.

    Spoiler anzeigen
    Option Strict On
    Imports System.Reflection
    Imports System.Runtime.CompilerServices
    Public Module ObjectExtension
    <Extension>
    Public Function CopyTo(Of T As New)(from As Object) As T
    Dim [to] As New T()
    Return CopyTo(Of T)(from, [to])
    End Function

    <Extension>
    Public Function CopyTo(Of T As New)(from As Object, [to] As T) As T
    Dim fromType As Type = from.GetType
    Dim toType As Type = [to].GetType
    For Each ff As FieldInfo In fromType.GetFields
    Dim tf As FieldInfo = toType.GetField(ff.Name)
    If tf IsNot Nothing Then
    tf.SetValue([to], ff.GetValue(from))
    End If
    Next
    For Each pi As PropertyInfo In fromType.GetProperties
    Dim empty As Object() = CType(New Object(), Object())
    Dim ti As PropertyInfo = toType.GetProperty(pi.Name)
    If ti IsNot Nothing Then
    ti.SetValue([to], pi.GetValue(from, empty), empty)
    End If
    Next
    Return [to]
    End Function



    Anwendung dann ganz einfach:

    VB.NET-Quellcode

    1. Dim serv = New WebService_Inoffice.NOFFICE_SDKSoapClient()
    2. Dim mitarbeiterLocal As New WebService_Inoffice.objMitarbeiter()
    3. Dim mitarbeiterWs = serv.GetMitarbeiter(1)
    4. mitarbeiterWs.CopyTo(Of xyzKlasse)(mitarbeiterLocal )


    Anders und komfortabler geht kaum oder?

    Grüße
    Sascha

    Edit: Sorry, hatte eine Zeile Code zu viel drinnen.
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()