首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF OperationContract返回List<CustomType>

WCF OperationContract返回List<CustomType>
EN

Stack Overflow用户
提问于 2014-08-29 13:53:27
回答 2查看 5.3K关注 0票数 2

我有一个返回列表的WCF服务。

代码语言:javascript
复制
[DataContract]
public class EmployeesVM
{
    [DataMember]
    public int ID { get; set; }
    [DataMember]
    public string Name { get; set; }
}

我使用EF将员工列表返回给这个类。在我的WCF服务中,我使用:

代码语言:javascript
复制
    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客户端应用程序中,我需要从方法中获取列表。

代码语言:javascript
复制
    void proxy_getEmployeesCompleted(object sender, GetDataService.getEmployeesCompletedEventArgs e)
    {
        if (e.Result != null)
        {
            List<ViewModel.EmployeesVM> resultList = e.Result.ToList();
        }
    }

在我的WP ViewModel文件夹中,我有相同的类型:

代码语言:javascript
复制
public class EmployeesVM
{
    public int ID { get; set; }
    public string Name { get; set; }
}

但是,当我试图编译时,我会得到以下错误:

代码语言:javascript
复制
 Cannot implicitly convert type      'System.Collections.Generic.List<SisSeguranca.GetDataService.EmployeesVM>' to 'System.Collections.Generic.List<SisSeguranca.ViewModel.EmployeesVM>'

我也试过了,但也没用。

代码语言:javascript
复制
 List<ViewModel.EmployeesVM> lista = (ViewModel.EmployeesVM)e.Result.ToList();

如何在具有相同字段和名称的客户端应用程序类型中转换WCF服务中返回的类型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-29 13:57:39

我相信您使用选项创建了服务引用。这将为您的WCF服务创建代理类。您的项目中似乎已经存在/引用了一个类似的类。这就是为什么你要得到错误。可以选择重用现有类型。启用它。

请参阅:如何:配置服务以重用现有类型

另一种选择是在单独的项目中将合同和相关实体分开。

请参阅:设计WCF合同时应考虑的事项

第一个建议是将逻辑相关的接口、契约、实体、消息和枚举分离到一个单独的项目中。这样做的一种方法是将类库项目添加到解决方案中,并以服务名称命名,并在其后面添加"Contracts“一词。WcfService1.Contracts就是一个例子。

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

票数 3
EN

Stack Overflow用户

发布于 2014-08-29 13:59:59

您正在创建两个名为"EmployeesVM“的类,您需要做的是将该类提取到由”服务器“和Windows共享的DLL中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25569778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档