我有一个自定义数据类型我放在类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?或者是我实现它的方式是什么?
答案 0 :(得分:3)
右键单击客户端项目中的服务参考,然后选中“重复使用参考装配中的类型”。
请确保您已将SharedTypes.District
添加到客户服务参考项目中。
答案 1 :(得分:2)
在客户端添加WCF引用时。单击高级选项。 您可以指定一个设置,以指示它重用指定程序集中的类型。 您将能够指定程序集。