Muss ich einen Konstruktor in einem WCF DataContract verfügbar machen, damit er während der Instanziierung des Objekts auf dem Client funktioniert?

9

Ich habe eine Klasse in einem WCF-Dienst, nennen wir sie A . A ist ein Datenvertrag, der als eines seiner DataMembers eine Sammlung eines anderen benutzerdefinierten Objekts B enthält. Um Nullreferenzprobleme auf der Clientseite zu vermeiden, instanziiere ich die BList im Konstruktor wie folgt:

%Vor%

Mein Problem ist, dass auf dem Client diese Instanziierung nicht stattfindet und BList als null erscheint, nachdem ein Objekt von A auf dem Client erstellt wurde. Ich vermute, dass der Konstruktor nicht auf dem Client erscheint. Muss ich also den Konstruktor zu einem expliziten Operationsvertrag machen? Wenn das der Fall wäre, würde das dem Klienten interne Dinge sichtbar machen, die sie nicht sehen sollten, oder? Wie stelle ich sicher, dass diese Instanziierung auf dem Client passiert?

Danke, und tut mir leid, wenn das wie eine dumme Frage erscheint.

    
Tushar S 25.10.2010, 22:23
quelle

2 Antworten

3

Sie müssen die Attribute [OnDeserializing] oder [OnDeserialized] verwenden, um die Initialisierung von DataContract-Typen durchzuführen. Siehe Ссылка

    
Eugene Osovetsky 26.10.2010 00:27
quelle
2

Ich bin nicht sicher, ob es eine Möglichkeit gibt, dies zu tun, aber indem ich die neue Instanz aus dem Dienst lade, sollte die Liste initialisiert werden, schlage ich folgendes vor:

  • Schreiben Sie eine Webmethode, die eine neue Instanz Ihrer Klasse zurückgibt, und Sie können sie wie folgt verwenden und ich bin mir sicher, dass Ihre Liste initialisiert ist

Um die Instanz zu erstellen:

%Vor%

Schreiben Sie im Service die Methode

%Vor%     
A_Nablsi 25.10.2010 23:06
quelle