c# - 不是正确的<type>?

标签 c# silverlight mvvm wcf-data-services

我很困惑。我有一个 Silverlight 项目,目前正在运行并显示来自我的模拟模型的服务器列表(我遵循 MVVM 模式)。

接口(interface)编码如下:

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>这样我就可以用假数据 stub 它或从真实数据中填充结果(ala ado.net 数据服务)。

我创建了一个本地类 LicenseServer,但该服务总是返回不同类型的 LicenseServer。

我收到一个错误:

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



我从服务引用中读取为 LicenseServer 的内容无法转换为我在模型类中定义的 LicenseServer

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

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

最佳答案

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

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

关于c# - 不是正确的<type>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/637397/

相关文章:

wpf - x :Key & TargetType in styles

silverlight - Windows Phone 中的 System.Windows.Browser

Silverlight:如何设置验证工具提示的样式?

c# - WPF 的 MVVM 模式 - 不使用任何工具包的二维图

c# - 在 Visual Studio C# 中使用 DataGridView

c# - 以编程方式删除回发时的浏览器缓存

c# - 使用VSTO读取Excel中的ActiveCell内容

c# - 如何在 WPF 中实例化从主窗口获取参数但尊重 MVVM 的子窗口

c# - 在我的用户控件中找不到 GotFocus()/LostFocus()