2009-03-12 5 views
1

Ich bin verwirrt. Ich habe ein Silverlight-Projekt, das derzeit ausgeführt wird und zeigt eine Liste von Servern von meinem gespotteten Modell an (ich folge dem MVVM-Muster).Nicht das richtige <type>?

Die Schnittstelle wird wie folgt codiert:

public class GetServersCompletedEventArgs : EventArgs 
{ 
    public Exception Error {get; set;} 
    public IEnumerable<LicenseServer> Results {get; private set;} 

    public GetServersCompletedEventArgs(Exception error, IEnumerable<LicenseServer> results) 
    { 
     this.Error = error; 
     this.Results = results; 
    } 
} 

public delegate void GetServersCompletedEvent(GetServersCompletedEventArgs e); 

public interface IDataService 
{ 
    void GetServers(); 

    event GetServersCompletedEvent GetServersCompleted; 
} 

Wie Sie die CompletedEventArgs die Ergebnisse als IEnumerable sehen können.

Das Problem, das ich habe, ist <LicenseServer> auf solche Weise definieren, dass ich es mit gefälschten Daten stub oder die Ergebnisse von echten Daten (ala ado.net Datendienste) ausfüllen kann.

Ich habe eine lokale Klasse LicenseServer erstellt, aber der Dienst gibt immer einen anderen Typ von LicenseServer zurück.

Ich erhalte eine Fehlermeldung:

convert Unable to cast object of type 'DataServiceOrderedQuery[LicenseMon.LMonServiceReference.License_Server]' to type 'System.Data.Services.Client.DataServiceQuery`1[LicenseMon.Model.LicenseServer]

, die ich als License vom Dienstverweis lesen kann nicht auf das License umgewandelt über wird ich in meiner Modellklasse

Warum definiert haben bin ich Probleme? Sollte ich nicht in der Lage sein, meine Kurse eigenständig zu entwickeln und in der Lage zu sein, zwischen einer Live-Datenbank und meinen intern generierten Daten zu wechseln? Komme ich dem in die falsche Richtung?

Alle Codebeispiele, Erklärungen, Links usw. wären sehr hilfreich

Antwort

2

Oft, wenn eine Web-Ressource (SOAP, WCF oder ADO.NET Data Services) raubend, eine separaten Client-Proxy-Klasse erzeugt. Dies wird ein ähnliches Layout haben, aber keine automatische Konvertierung in Ihren lokalen Typ. Einige Systeme unterstützen die Wiederverwendung von Typen (WCF usw.), aber nicht alle.

Sie könnten der partiellen Klasse eine Konvertierung oder eine Schnittstelle hinzufügen; aber im Allgemeinen sollten Sie dies als einen separaten Typ behandeln.

Verwandte Themen