gpt4 book ai didi

c# - WCF OperationContract 返回列表

转载 作者:行者123 更新时间:2023-11-30 22:04:00 24 4
gpt4 key购买 nike

我有一个返回列表的 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 Phone 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 服务中返回的类型?

最佳答案

我相信您使用 Visual Studio 添加服务引用选项创建了服务引用。这将为您的 WCF 服务创建代理类。看起来您的项目中已经存在/引用了类似的类。这就是您收到错误的原因。可以选择重用现有类型。启用它。

参见:How to: Configure a Service to Reuse Existing Types

enter image description here

另一种选择是在单独的项目中将契约(Contract)和相关实体分开

参见:Things to Consider When Designing a WCF Contract

The first recommendation is to separate logically related interfaces, contracts, entities, messages, and enumerations into a separate project. One way to do this is to add a class library project to your solution and name it after your service name, with the word "Contracts" appended to it. An example of this is WcfService1.Contracts.

您可以在 WCF 服务以及使用该服务的项目中引用该 dll/项目。

关于c# - WCF OperationContract 返回列表<CustomType>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25569778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com