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

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

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

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

这种现象,在实际做项目时是怎么避免的, 应用了哪些好的解决方法 ?
...全文
564 4 打赏 收藏 转发到动态 举报
写回复
用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 的回复:
代理类生成时可以选择契约是用项目中已存在的数据契约,默认是自动创建
是怎么选择契约的呢 ?可以给个例子吗
基 础 知 识. 第1章 asp.net介绍 2 1.1 xhtml语言 2 1.2 静态网页 3 1.3 动态网页 3 1.4 iis的安装和配置 3 1.5 asp.net开发的预备知识 4 1.5.1 asp.net简介 4 1.5.2 在iis上配置asp.net 4 1.5.3 visual studio版本与 1.5.3 .net framework版本及 1.5.3 asp.net版本之间的关系 7 1.5.4 asp.net运行内幕 7 1.6 结论 9 第2章 asp.net基础 10 2.1 request对象 10 2.2 response对象 11 2.3 server对象 13 2.4 session对象 14 2.5 cookie对象 15 .2.6 application对象 16 2.7 viewstate对象 18 2.8 [%%]表达式 20 2.9 [%=%]表达式 20 2.10 目录运算符 22 2.11 总结 22 第3章 表单和控件 23 3.1 html表单的提交方式 23 3.2 html控件 25 3.3 获取html控件的值 25 3.4 sql注入 26 3.5 乱码问题 26 3.6 服务器端表单 28 3.7 html服务器控件 28 3.8 总结 31 第4章 visual studio 2008介绍 32 4.1 visual studio 2008网站 4.1 开发环境介绍 32 4.2 asp.net网站类型介绍 33 4.3 创建基于解决方案的asp.net 4.3 应用程序 35 4.4 asp.net内置文件夹介绍 36 4.5 xml注释 37 4.6 任务管理器 38 4.7 配置外部工具 39 4.8 代码段管理器 40 4.9 发布asp.net网站 44 4.10 总结 45 第5章 page类和回调技术 46 5.1 page类介绍 46 5.1.1 单文件页模型 46 5.1.2 代码隐藏页模型 48 5.2 asp.net页面的生命周期 50 5.3 利用page的事件进行统一 5.3 身份验证 52 5.4 ispostback属性 54 5.5 validaterequest属性 55 5.6 clientscript属性 56 5.7 回调技术 60 5.8 总结 67 第6章 asp.net基本控件 68 6.1 asp.net服务器控件简介 68 6.2 button控件 69 6.3 textbox控件 75 6.4 asp.net服务器控件的特殊 6.4 客户端事件 78 6.5 fileupload控件 81 6.6 literal控件 84 6.7 panel控件 86 6.8 placeholder控件 88 6.9 总结 89 第7章 ado.net介绍 90 7.1 ado.net简介 90 7.2 connection对象 93 7.3 command对象 100 7.4 datareader对象 101 7.5 dataadapter对象 105 7.6 dataset对象 105 7.7 datatable对象 108 7.8 参数化sql语句 110 7.9 分页查询sql语句 111 7.10 总结 114 第8章 数据绑定控件 115 8.1 dropdownlist控件 116 8.2 listbox控件 118 8.3 数据绑定表达式 120 8.4 gridview控件 122 8.5 datalist控件 133 8.6 repeater控件 136 8.7 form view控件 138 8.8 detailsview控件 141 8.9 总结 144 第9章 验证控件 145 9.1 数据验证介绍 145 9.2 客户端脚本验证 146 9.3 asp.net验证控件概述 148 9.4 requiredfieldvalidator控件 149 9.5 comparevalidator控件 151 9.6 rangevalidator控件 155 9.7 正则表达式 157 9.8 regularexpressionvalidator控件 159 9.9 customvalidator控件 161 9.10 validationsummary控件 165 9.11 分组验证技术 167 9.12 总结 170 第10章 复合控件和母板页 172 10.1 treeview控件 172 10.2 multiview控件 176 10.3 用javascript方式实现 10.3 选项卡式效果 181 10.4 wizard控件 186 10.5 masterpage母板页 190 10.6 总结.. 194 进 阶 知 识 第11章 web.config详解 196 11.1 配置文件的查找算法 196 11.2 配置文件节点介绍 198 11.2.1 [configsections]节点 198 11.2.2 [appsettings]节点 199 11.2.3 [connectionstrings]节点 199 11.2.4 [location]节点 199 11.2.5 [system.web]节点 200 11.3 配置文件的读/写操作 209 11.4 总结 213 第12章 asp.net底层探秘 214 12.1 asp.net底层之旅 214 12.2 ihttpmodule接口 217 12.3 httpapplication及global.asax 220 12.4 ihttphandler接口 224 12.4.1 实现自定义文件类型处理 224 12.4.2 给图片动态添加水印功能 226 12.4.3 防盗链功能 229 12.5 在iis中配置自己编写的 12.5 httphandler 236 12.6 总结 237 第13章 asp.net中的ajax开发 238 13.1 纯javascript开发ajax应用 238 13.2 第三方(ajaxpro)开发 13.2 ajax应用 246 13.3 微软ajax控件库开发ajax应用 254 13.3.1 scriptmanager控件 254 13.3.2 scriptmanagerproxy控件 255 13.3.3 updatepanel控件 255 13.3.4 timer控件 259 13.3.5 updateprogress控件 260 13.4 总结 265 第14章 分布式开发 266 14.1 分布式计算的概念 266 14.2 xml web service开发 266 14.2.1 xml web service介绍 266 14.2.2 xml web service服务器端 14.2.2 开发及部署 268 14.2.3 webservice的部署 270 14.2.4 webservice客户端开发 272 14.2.5 异步调用webservice 274 14.3 wcf开发 276 14.3.1 定义wcf服务契约和引入 14.3.1 wcf服务契约 277 14.3.2 构架wcf服务,运行wcf 14.3.1 服务 281 14.3.3 生成wcf服务代理的 14.3.1 代码文件 283 14.3.4 客户端访问wcf 285 14.3.5 运行程序 286 14.4 总结 286 第15章 asp.net中的三层架构 287 15.1 数据库通用类 287 15.1.1 sql server数据库访问 15.1.1 通用类 288 15.1.2 using关键字的用法 293 15.2 三层架构的定义及代码示例 294 15.3 三层架构的特点 309 15.4 对三层架构的一点扩充 309 15.5 总结 310 第16章 单元测试 311 16.1 nunit简介 311 16.2 nunit界面介绍 312 16.2.1 file菜单 312 16.2.2 project菜单 313 16.3 nunit api介绍 313 16.4 利用nunit进行单元测试 318 16.5 其他的单元测试软件 320 16.6 总结 321 第17章 asp.net中的gdi+技术 322 17.1 gdi+介绍 322 17.2 在数据中保存和显示图片 323 17.3 使用gdi+生成图片 330 17.4 验证码实现 331 17.5 总结 335 高 级 知 识 第18章 asp.net报表技术 338 18.1 owc控件的使用 338 18.2 zedgraph控件的使用 344 18.3 rdlc报表的使用 349 18.4 总结 355 第19章 .net的文件io体系和静态页面生成技术 356 19.1 .net中的文件体系 356 19.1.1 driveinfo类 356 19.1.2 directory及directoryinfo类 359 19.1.3 file及fileinfo类 362 19.1.4 path类 366 19.2 .net中的io体系 369 19.2.1 基于字节的流 369 19.2.2 基于字符的流 373 19.3 静态页面生成技术 378 19.3.1 为什么要生成静态页面 378 19.3.2 什么时候生成静态页面 379 19.3.3 如何生成静态页面 379 19.4 总结 387 第20章 数据安全技术 388 20.1 自定义加密 388 20.2 对称加密 391 20.3 不对称加密 398 20.4 加密签名 402 20.5 加密哈希 403 20.6 总结 406 第21章 asp.net网站的性能优化 407 21.1 程序编码优化 407 21.1.1 集合操作 407 21.1.2 字符串连接优化 410 21.1.3 类型转换优化 413 21.1.4 使用server.transfer()方法 414 21.1.5 避免不必要的服务器往返 414 21.1.6 尽早释放对象 415 21.1.7 尽量减少服务器控件的使用 415 21.2 数据操作优化 415 21.2.1 数据库连接对象使用优化 415 21.2.2 数据访问优化 416 21.2.3 优化sql语句 416 21.2.4 合理使用缓存 416 21.3 配置优化 420 21.3.1 禁用调试模式 420 21.3.2 合理使用viewstate 420 21.3.3 合理选择会话状态数据 21.3.3 存储模式 423 21.4 总结 424 第22章 综合实例 425 22.1 项目介绍 425 22.2 数据库设计 426 22.3 实体层设计 429 22.4 数据访问层设计 433 22.5 业务逻辑层设计 441 22.6 网站项目和单元测试项目说明 447 22.7 总结... 448

17,740

社区成员

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

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