不是正确的<type>?</type>

时间:2009-03-12 04:46:26

标签: c# silverlight mvvm wcf-data-services

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

我收到错误:

  

将Unable转换为类型的强制转换对象   'DataServiceOrderedQuery [LicenseMon.LMonServiceReference.License_Server]'   输入   “System.Data.Services.Client.DataServiceQuery`1 [LicenseMon.Model.LicenseServer]

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

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

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

1 个答案:

答案 0 :(得分:2)

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

您可以为分部类添加转换或接口;但一般来说,你应该把它当作一个单独的类型。