Generischer Typ über WCF-Dienst serialisieren

8

Ich habe eine C # -Klasse definiert wie folgt:

%Vor%

Ich erstelle eine Instanz dieser Klasse auf meinem Server. Ich versuche dann, es über den Draht über einen WCF-Dienst wie hier gezeigt zu übergeben:

%Vor%

Alles kompiliert an dieser Stelle gut. Wenn ich "Service-Referenz" in meiner Silverlight-App neu kompiliere, erhalte ich einen Kompilierungsfehler, der dem Folgenden ähnelt:

MyNamespace.GenericItemOfMyCustomType [zusätzliche Zeichen] enthält keine öffentliche Definition für 'GetEnumerator'

Ich habe keine Ahnung warum:

  1. Zusätzliche Zeichen erscheinen. Die scheinen sich jedes Mal zu ändern, wenn ich die Service-Referenz aktualisiere.
  2. Wie kann ich das wirklich beheben?

Was mache ich falsch?

    
JavaScript Developer 08.05.2012, 14:43
quelle

4 Antworten

7

Sleiman ist korrekt, aber man kann Bounded Generics verwenden, wie in beschrieben Dieser Artikel , und Sie können möglicherweise erreichen, was Sie wollen. Auf diese Weise können Sie einen generischen Typ innerhalb des Service erstellen und verfügbar machen. Der Konsument wird es jedoch nicht als generisch anzeigen, da der Typ in der Serviceoperation angegeben ist.

    
ldgorman 08.05.2012, 14:59
quelle
5

Sie können keine WCF-Verträge definieren, die auf generischen Typparametern beruhen. Generika sind spezifisch für .NET, und deren Verwendung würde die serviceorientierte Natur von WCF verletzen. Ein Datenvertrag kann jedoch eine Auflistung als Datenmember enthalten, da WCF dedizierte Marshallingregeln für Sammlungen bereitstellt.

    
Sleiman Jneidi 08.05.2012 14:53
quelle
1

Wie Sleiman darauf hingewiesen hat, werden Generika in SOAP nicht unterstützt.

WCF und Generika - & gt; Ссылка

Verwandte Frage - & gt; WCF. Service generische Methoden

    
Tilak 08.05.2012 14:58
quelle
-3

Sie können Folgendes auf der Clientseite verwenden, anstatt die Servicereferenz zu verwenden:

%Vor%

Funktioniert für Generika.

    
Naha 19.11.2014 14:09
quelle

Tags und Links