4

我有一个自定义数据类型,我放入了类库 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();
    }
}

但是这里出现了问题,这个实现期望使用它从服务引用中获得的 District 版本

WcfClientLibrary.SalesService.District

代替

SharedTypes.District

它们是相同的,但 VS 不知道

因此,我收到接口未正确实现的错误,因为我有 2 种不同类型的 District 类。

如何获得服务参考以使用 SharedTypes.District 代替?还是我实现它的方式很遥远?

4

2 回答 2

3

右键单击客户端项目中的服务引用并选中“Reuse Types in Referenced Assemblies”。

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

于 2013-01-08T13:03:16.607 回答
2

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

于 2013-01-08T13:03:24.567 回答