加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 向多个共享类的WCF服务添加服务引用

发布时间:2020-12-15 04:30:28 所属栏目:百科 来源:网络整理
导读:我正在尝试将我的WCF Web服务拆分为一些服务,而不是一个巨大的服务.但Visual Studio(Silverlight客户端)复制了两个服务共享的公共类.这是一个简单的例子来说明我的问题. 在此示例中,有两个服务.两者都返回“Person”类型.默认情况下,VS将在唯一的NameSpaces
我正在尝试将我的WCF Web服务拆分为一些服务,而不是一个巨大的服务.但Visual Studio(Silverlight客户端)复制了两个服务共享的公共类.这是一个简单的例子来说明我的问题.

在此示例中,有两个服务.两者都返回“Person”类型.默认情况下,VS将在唯一的NameSpaces下创建两个单独的Person代理.这意味着不同服务返回的“Person”不能被客户端消费为同一个东西.我该如何解决?没有自己编写代理类是否可能?

共同

[DataContract]
public class Person
{
    [DataMember]
    string FirstName { get; set; }
    [DataMember]
    string LastName { get; set; }
    [DataMember]
    string PrivateData { get; set; }
}

StaffService.svc

[ServiceContract(Namespace = "")]
public class StaffService
{
     [OperationContract]
     public Person GetPerson ()
     {
         return new Person {"John","Doe","secret"};
     };
}

PublicService.svc

[ServiceContract(Namespace = "")]
public class PublicService
{
     [OperationContract]
     public Person GetPerson ()
     {
         return new Person {"John","*****"};
     };
}

谢谢你的帮助!
贾斯汀

解决方法

“添加服务引用”的“高级”部分下有一个复选框,名为“在引用的程序集中重用类型”.这将搜索您的服务中使用的类型,如果它们已经存在于引用的程序集中,那么它们将被使用而不是生成的代理类.

这里需要注意的是,它只是被搜索的“引用程序集”,所以它不会获取其他服务生成的代理(我相信不同的命名空间也会阻止它).

我通常在我的Silverlight项目中有一个业务/域项目,所以我将我的共享类添加到该项目中(通常使用“添加现有项”>“添加为链接”以便共享代码).

完成后,您可以生成服务引用,他们应该选择现有类型.

希望这可以帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读