在客户端和服务器wcf服务上使用自定义数据类型

时间:2013-01-08 12:59:47

标签: c# wcf

我有一个自定义数据类型我放在类Library SharedTypes

namespace SharedTypes
{
    public class District
    {
        public long Id { get; set; }
        public string Name { get; set; }
    }
}

然后我有一个带有此服务的WCF服务器

using System.ServiceModel;
using SharedTypes;

namespace WCF.WCFInterfaces
{
    [ServiceContract]
    public interface IWcfService
    {
        [OperationContract]
        District GetDistrict(long id);

        [OperationContract]
        void CreateDistrict(District district);

        [OperationContract]
        List<District> GetDistricts();
     }
}

在客户端,我有一个接口(所以我注入了实现)

using SharedTypes;

namespace WcfInterfaces
{
    public interface IDistrictManager
    {
        void CreateDistrict(District district);
        District GetDistrict(long id);
        List<District> GetDistricts();
    }
}

我终于有了客户端应该使用的实现

public class DistrictManager : IDistrictManager
{
    private readonly WcfServiceClient _salesService;
    public DistrictManager()
    {
        _salesService = new WcfServiceClient();
    }

    public void CreateDistrict(District district)
    {
        _salesService.CreateDistrictAsync(district);
    }

    public District GetDistrict(long id)
    {
        return _salesService.GetDistrict(id);
    }

    public List<District> GetDistricts()
    {
        var list = _salesService.GetDistricts();
        return list.ToList();
    }
}

但是问题出现了,这个实现期望使用从服务引用中获取的区域版本

WcfClientLibrary.SalesService.District

而不是

SharedTypes.District

他们是一样的,但VS不知道

所以我得到的错误是接口没有正确实现,因为我有2种不同类型的区类。

如何获取Service引用以使用SharedTypes.District?或者是我实现它的方式是什么?

2 个答案:

答案 0 :(得分:3)

右键单击客户端项目中的服务参考,然后选中“重复使用参考装配中的类型”。

请确保您已将SharedTypes.District添加到客户服务参考项目中。

答案 1 :(得分:2)

在客户端添加WCF引用时。单击高级选项。 您可以指定一个设置,以指示它重用指定程序集中的类型。 您将能够指定程序集。