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