Не правильно <type>? - PullRequest
       14

Не правильно <type>?

1 голос
/ 12 марта 2009

Я в замешательстве. У меня есть проект Silverlight, который в настоящее время выполняется и отображает список серверов из моей моделируемой модели (я следую шаблону MVVM).

Интерфейс кодируется следующим образом:

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

Как видите, CompletedEventArgs возвращает результаты в виде IEnumerable.

Проблема, с которой я сталкиваюсь, заключается в определении <LicenseServer> таким образом, чтобы я мог заглушить его поддельными данными или заполнить результаты реальными данными (службы данных ala ado.net).

Я создал локальный класс LicenseServer, но служба всегда возвращает другой тип LicenseServer.

Я получаю ошибку:

конвертировать Невозможно привести объект типа 'DataServiceOrderedQuery [LicenseMon.LMonServiceReference.License_Server] печатать «System.Data.Services.Client.DataServiceQuery`1 [LicenseMon.Model.LicenseServer]

То, что я прочитал как LicenseServer из справочника службы, не может быть преобразовано в LicenseServer, который я определил в своем классе моделей

Почему у меня проблемы? Разве я не могу самостоятельно разрабатывать свои классы и иметь возможность переключаться между действующей базой данных и моими внутренне сгенерированными данными? Я неправильно подхожу к этому?

Любые примеры кода, пояснения, ссылки и т. Д. Будут наиболее полезны

1 Ответ

2 голосов
/ 12 марта 2009

Часто при использовании веб-ресурса (SOAP, WCF или ADO.NET Data Services) генерируется отдельный клиентский прокси-класс. Это будет иметь похожий макет, но не будет автоматически преобразовываться в ваш локальный тип. Некоторые системы поддерживают повторное использование типов (WCF и т. Д.), Но не все.

Вы можете добавить преобразование или интерфейс к частичному классу; но в целом вы должны рассматривать это как отдельный тип.

...