C# 在客户端和服务器wcf服务上使用自定义数据类型
我在类库SharedTypes中放入了一个自定义数据类型C# 在客户端和服务器wcf服务上使用自定义数据类型,c#,wcf,C#,Wcf,我在类库SharedTypes中放入了一个自定义数据类型 namespace SharedTypes { public class District { public long Id { get; set; } public string Name { get; set; } } } 然后,我有一个WCF服务器与此服务 using System.ServiceModel; using SharedTypes; namespace WCF
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();
}
}
而不是
SharedTypes.District
他们是一样的,但是他们不知道
因此,我得到了接口未正确实现的错误,因为我有两种不同类型的District类
如何获取服务引用以使用SharedTypes.District?或者,这是我的实现方式吗?右键单击客户端项目中的服务参考,然后选中“在引用的程序集中重用类型”
在客户端添加WCF参考时,请确保已将
共享类型.District
添加到您的客户服务参考项目中。。单击高级选项。
您可以指定一个设置,告诉它重用指定程序集中的类型。
您可以指定程序集。我这样做可以吗?还是有些事情我需要重新考虑?我认为你的实施是可以的;但是没有必要将枚举表转换为服务器端的列表。。。(虽然这根本不是问题)。GetDistricts()在客户端返回一个数组,所以我必须这样做,我猜序列化对自定义类型的集合不起作用?嗯,我可能会说是的;只要不将它们标记为返回特定类型。您可以参考以下帖子:我必须右键单击客户端项目中的服务引用,然后选择配置服务引用。一旦我打开它,它就已经被检查以重用引用程序集中的类型。我点击ok,然后它开始工作。真奇怪!
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