2

我的项目中有两个 WCF 服务。服务共享一种类型,但每个服务都生成自己的类型。是否可以为两种服务生成一个类?

服务器端的示例代码:

[DataContract]
class MyClass { /*some properties*/ } 

[ServiceContract]
public interface IService1 
{
    [OperationContract]
    MyClass GetSomeValue();
}

public class Service1 : IService1
{
   public MyClass GetSomeValue() { /*some logic*/ }
}

[ServiceContract]
public interface IService2 
{
    [OperationContract]
    MyClass GetSomeOtherValue();
}

public class Service2 : IService2
{
   public MyClass GetSomeOtherValue() { /*some logic*/ }
}

在客户端,为每个服务生成两个“MyClass”:

namespace Services.Service1Reference {
[System.SerializableAttribute()]
public partial class RSTRole : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged 
{
}

namespace Services.Service2Reference {
[System.SerializableAttribute()]
public partial class RSTRole : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged 
{
}
4

1 回答 1

1

这需要一些改变

  1. 您需要直接在客户端程序集中引用用于在两个服务上包含共享实体 (DTO) 的相同实际程序集(即将此程序集添加为您要添加 WCF 服务引用的同一项目的引用)。根据Dimitri's评论,将共享实体重构为仅包含 DTO 的小程序集是有意义的,如果您还没有这样做的话。

  2. 在客户端,添加服务引用时需要选择Advanced,然后选择Reuse Types in Referenced Assemblies,如下:

共享类型的服务引用

于 2014-12-22T15:24:41.207 回答