2009-07-16 12 views
0

Ich habe eine vb.net Basisklasse in einer DLL in meinem C# -Projekt. Ich habe eine abgeleitete Klasse in C# erstellt. Ich fülle die Klasse C# mit all ihren Eigenschaften, einschließlich der Basiseigenschaften aus der Klasse vb.Webservice: nicht alle Eigenschaften auf dem Client

Jetzt sende ich sie über einen Webservice (C#) an einen jQuery-Client. Aber auf dem Client sehe ich nur die vb-Eigenschaften?

Jeder hat eine Ahnung?

public class FilmItem : ContentItem // ContentItem is from VB DLL 
{ 
    public string Zender { get; set; } 
    public string Jaar { get; set; } 

}

[WebMethod] 
    public IEnumerable GetContentItems(VBLib.GridRequest gridRequest) 
    { 
     ContentCache contentCache = new ContentCache(); 
     return contentCache.GetFilms(gridRequest); // gives back a List<FilmItem> 
    } 

habe gerade herausgefunden, dass, wenn ich die vb.net Klasse zu entfernen, alle Eigenschaften zeigen von der C# -Klasse in Ordnung. Außerdem stellte sich heraus, dass der vb.net wie folgt deklariert ist:

Public Class ContentItem 
Inherits System.Collections.Generic.Dictionary(Of String, Object) 
Implements IContentItem 

Könnte es das Wörterbuch oder die Schnittstelle sein? (Das fasst die Eigenschaften bis ich sah)

Grüßen, Henk

+0

Bitte geben Sie einen Beispielcode ein. – Alex

Antwort

0

Was war der Typ, den Sie aus dem Webdienst zurück? Die C# -Klasse?

Auch, bitte zeigen Sie einige Code. Ich wette, Sie haben gerade die C# -Eigenschaften falsch erstellt, und wenn Sie die Basisklasse entfernt und nur die abgeleitete Klasse gesendet haben, erhalten Sie nichts gesendet.

+0

Es ist nicht die C# -Klasse, irgendwie liegt es an der Tatsache, dass ich es aus dem vb.net-Lass ableite, das von einem Dictionary erbt und eine Schnittstelle implementiert, die die Eigenschaften summiert, die ich gesehen habe. – Henk

+0

Wörterbücher sind nicht XML-serialisierbar. Versuchen Sie außerdem, IEnumerable anstelle von IEnumerable zurückzugeben. –

+0

Ja, das weiß ich. Aber einige Untersuchungen haben gezeigt, dass es sich nur um Eigenschaften aus der Vb-Klasse handelt, die in das Wörterbuch aufgenommen wurden. Das Aufrufen des Webdienstes aus dem Browser gab mir auch einen Fehler (das Wörterbuch kann nicht serialisiert werden). Aber was ich nicht verstehe ist, warum es funktioniert, wenn es von jQuery aus aufgerufen wird, und warum sehe ich nicht die C# -Eigenschaften. Da die Vb-Klasse nur ein Container für einige Properties war und nichts mehr, habe ich gerade eine neue C# -Baseclass erstellt, der alte Legacy-Code verwendet immer noch die Vb-Sachen, ich bin jetzt nur für die C# -Stücke verantwortlich :) – Henk

Verwandte Themen