我很困惑。我有一个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
为什么我遇到麻烦?我不应该独立开发我的类,并能够在实时数据库和我内部生成的数据之间切换?我是以错误的方式接近这个吗?
任何代码示例,解释,链接等都是最有帮助的
答案 0 :(得分:2)
通常,在使用Web资源(SOAP,WCF或ADO.NET数据服务)时,会生成单独的客户端代理类。这将具有类似的布局,但没有自动转换为您的本地类型。有些系统支持类型重用(WCF等),但不是全部。
您可以为分部类添加转换或接口;但一般来说,你应该把它当作一个单独的类型。