Domanda

Sono confuso. Ho un progetto Silverlight che attualmente è in esecuzione e visualizza un elenco di server dal mio modello deriso (sto seguendo il modello MVVM).

L'interfaccia è codificata come segue:

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;
}

Come puoi vedere CompletedEventArgs restituisce i risultati come IEnumerable.

Il problema che sto riscontrando è la definizione di < LicenseServer > in modo tale da poterlo stub con dati falsi o popolare i risultati da dati reali (ala ado.net data services).

Ho creato un LicenseServer di classe locale ma il servizio restituisce sempre un diverso tipo di LicenseServer.

Ricevo un errore:

  

converti Impossibile eseguire il cast dell'oggetto di tipo   'DataServiceOrderedQuery [LicenseMon.LMonServiceReference.License_Server]'   digitare   'System.Data.Services.Client.DataServiceQuery`1 [LicenseMon.Model.LicenseServer]

Che ho letto come LicenseServer dal riferimento del servizio non può essere convertito nel LicenseServer che ho definito nella mia classe di modello

Perché ho problemi? Non dovrei essere in grado di sviluppare le mie classi in modo indipendente ed essere in grado di passare da un database live ai miei dati generati internamente? Mi sto avvicinando a questo nel modo sbagliato?

Eventuali esempi di codice, spiegazioni, collegamenti ecc. sarebbero molto utili

È stato utile?

Soluzione

Spesso, quando si consuma una risorsa Web (SOAP, WCF o ADO.NET Data Services), viene generata una classe proxy client separata . Questo avrà un layout simile, ma non ha una conversione automatica nel tuo tipo locale. Alcuni sistemi supportano il riutilizzo dei tipi (WCF ecc.), Ma non tutti.

È possibile aggiungere una conversione o un'interfaccia alla classe parziale; ma in generale, dovresti considerare questo come un tipo separato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top