我有一个返回列表的WCF服务。
[DataContract]
public class EmployeesVM
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
}我使用EF将员工列表返回给这个类。在我的WCF服务中,我使用:
public IList<EmployessVM> getEmployees()
{
using (var dbContext = new SecEntities())
{
return (from e in dbContext.Employees
select new EmployeesVM {
ID = e.ID,
Name = e.Name
}).ToList();
}
}在我的Windows 8客户端应用程序中,我需要从方法中获取列表。
void proxy_getEmployeesCompleted(object sender, GetDataService.getEmployeesCompletedEventArgs e)
{
if (e.Result != null)
{
List<ViewModel.EmployeesVM> resultList = e.Result.ToList();
}
}在我的WP ViewModel文件夹中,我有相同的类型:
public class EmployeesVM
{
public int ID { get; set; }
public string Name { get; set; }
}但是,当我试图编译时,我会得到以下错误:
Cannot implicitly convert type 'System.Collections.Generic.List<SisSeguranca.GetDataService.EmployeesVM>' to 'System.Collections.Generic.List<SisSeguranca.ViewModel.EmployeesVM>'我也试过了,但也没用。
List<ViewModel.EmployeesVM> lista = (ViewModel.EmployeesVM)e.Result.ToList();如何在具有相同字段和名称的客户端应用程序类型中转换WCF服务中返回的类型?
发布于 2014-08-29 13:57:39
我相信您使用选项创建了服务引用。这将为您的WCF服务创建代理类。您的项目中似乎已经存在/引用了一个类似的类。这就是为什么你要得到错误。可以选择重用现有类型。启用它。
请参阅:如何:配置服务以重用现有类型

另一种选择是在单独的项目中将合同和相关实体分开。
请参阅:设计WCF合同时应考虑的事项
第一个建议是将逻辑相关的接口、契约、实体、消息和枚举分离到一个单独的项目中。这样做的一种方法是将类库项目添加到解决方案中,并以服务名称命名,并在其后面添加"Contracts“一词。WcfService1.Contracts就是一个例子。
您可以在WCF服务中引用该dll/项目,也可以引用使用该服务的项目。
发布于 2014-08-29 13:59:59
您正在创建两个名为"EmployeesVM“的类,您需要做的是将该类提取到由”服务器“和Windows共享的DLL中。
https://stackoverflow.com/questions/25569778
复制相似问题