客户端添加WCF服务引用,自动生成.NET类型

xiao-wali 2016-04-28 09:35:10
WCF 服务,客户端可以通过添加服务引用自动生成代理类的!
问题来了,在一个项目中添加不同的WCF服务引用, 生成的代理类有时有很多类型是重复被代理生成的。

比如:添加服务地址A的服务引用,创建出来一个类型 A.ClassA ,再添加另一个服务地址B的服务引用,又创建出来一个类型 B.ClassA, 这两个类型在服务端其实都是一个类型定义, 只是两个服务接口使用了相同的这个类型 ClassA。

那么客户端在使用 ClassA 时有些麻烦,因为添加了多个WCF服务引用,相同类型 ClassA的命名空间会不同, 有时会造成二义性或两个不同命名空间下的ClassA相互赋值和转换问题。

这种现象,在实际做项目时是怎么避免的, 应用了哪些好的解决方法 ?
...全文
582 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiao-wali 2016-05-09
  • 打赏
  • 举报
回复

    [ServiceContract]
    public interface ITestService1
    {
        [OperationContract]
        TestCustomData GetVal1();
    }

    [ServiceContract]
    public interface ITestService2
    {
        [OperationContract]
        TestCustomData GetVal2();
    }

    
    public class TestService1 : ITestService1
    {
        public TestCustomData GetVal1()
        {
            return new TestCustomData() { Name = "x1", Age = 12 };
        }
    }

    public class TestService2 : ITestService2
    {
        public TestCustomData GetVal2()
        {
            return new TestCustomData() { Name = "x2", Age = 24 };
        }
    }
    [DataContract(Name = "TcData", Namespace = "http://www.cnblogs.com")]
    public class TestCustomData
    {
        public string Name { get; set; }

        public int Age { get; set; }
    }
客户端我添加两个服务引用, 配置“始终生成消息约定”,分别是 TestService1Reference 和 TestService2Reference ,生成客户端代理, 在代码中定义 TcData data; 同样,会报错 CS0104, “TcData”是“TestService1Reference.TcData”和“TestService2Reference.TcData”之间的不明确的引用
  • 打赏
  • 举报
回复
代理类生成时可以选择契约是用项目中已存在的数据契约,默认是自动创建
  • 打赏
  • 举报
回复

添加服务引用--高级
xiao-wali 2016-04-28
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
代理类生成时可以选择契约是用项目中已存在的数据契约,默认是自动创建
是怎么选择契约的呢 ?可以给个例子吗

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧