1

我很困惑。我有一个 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

为什么我有麻烦?我不应该能够独立开发我的课程并能够在实时数据库和我内部生成的数据之间切换吗?我是以错误的方式接近这个吗?

任何代码示例、解释、链接等都是最有帮助的

4

1 回答 1

2

通常,在使用 Web 资源(SOAP、WCF 或 ADO.NET 数据服务)时,会生成一个单独的客户端代理类。这将具有类似的布局,但不会自动转换为您的本地类型。一些系统支持类型重用(WCF 等),但不是全部。

您可以向部分类添加转换或接口;但总的来说,您应该将其视为单独的类型。

于 2009-03-12T05:11:37.677 回答