WCF服务编程中使用SvcMap实现类型共享等技巧

作者:小菜 更新时间:2025-02-27 点击数:
简介:调用过WCF服务的同学可能都会遇到这样的问题,同一个实体类型,不同的服务Visual Studio生成了不同的版本,例如Service1.User和Servic

【菜科解读】

调用过WCF服务的同学可能都会遇到这样的问题,同一个实体类型,不同的服务Visual Studio生成了不同的版本,例如Service1.User和Service2.User,对于C#来说,这是两个不同的类型,Service1获得的User是放不到Service2服务里去的。

手动的属性赋值来转换显然是不可取的,所以就共享类型了。

方法一、服务端和客户端共享数据契约程序集

这个方法最常用,也是大家最熟悉的方法,把WCF的数据契约放在一个独立类库里,服务端,客户端都引用这个程序集,然后在生成WCF时,选择重新使用引用程序集中的类型即可。

这个方法缺点很明显,它只有在客户端和服务端在同一个Visual Studio解决方案内才方便,否则要不断手动更新数据契约程序集。

更不用说是第三方的服务。

方法二,暴力转换类型

这个其实不是类型共享,不过也是解决这个问题的一种手段。

就是借助AutoMapper,EmitMapper这样的类库帮助快速转换类型。

下面是一个例子。

Money类型包含User实体和Currency枚举和一个数字的Amount,Money的定义

[DataContract(Namespace = Consts.Namespace)]public class Money [DataMember] public decimal Amount { get; set; } [DataMember] public Currency Currency { get; set; } [DataMember] public UserInfo User { get; set; }}

Currency:

[DataContract(Namespace = Consts.Namespace)]public enum Currency [EnumMember] Euro, [EnumMember] Usd, [EnumMember] PoundSterling}

UserInfo:

[DataContract(Namespace = Consts.Namespace)]public class UserInfo [DataMember] public string FirstName { get; set; } [DataMember] public string LastName { get; set; } [DataMember] public string Email { get; set; } [DataMember] public string Phone { get; set; } [DataMember] public string Id { get; set; }}

对于DepositServiceNoSharp和WithdrawalServiceNoSharp这两个WCF服务版本的Money和User,可以这样添加一些扩展方法

using AutoMapper;using DepositService = Client.DepositServiceNoSharp;using Client.WithdrawalServiceNoSharp;namespace Client public static class Extensions static Extensions() Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); public static Money ToWithdrawal(this DepositService.Money money) return Mapper.Map(money); public static DepositService.Money ToDeposit(this Money money) return Mapper.Map(money);}

然后就可以轻松转换

var money = new Money Amount = 1, Currency = Currency.Usd, User = new UserInfo Email = "zhww@outlook.com", FirstName = "zhang", Id = "123", LastName = "weiwen", Phone = "110"var depositMoney = money.ToDeposit();

方法三、使用SvcMap实现类型共享

其实这个才是文章的重点,前面可以忽略。

生成第一个WCF服务后,点击”显示所有文件“去编辑SvcMap文件:

找到MetadataSources节点,原来只有一个,现在把其他要引用的服务添加到这里,例如:

再右击服务,”更新服务引用“,所有服务都会生成到同一个命名空间里,实现类型共享。

WCF,服务,编程,中,使用,SvcMap,实现,类型,共享

汕湛高速的服务区有多少个?附自驾线路图

汕湛高速公路在2020年的年末开通了,这是一条备受期待的高速路,比原计划还早了一年开通。

这是广东东西方向大大动脉工程,将会连接从化、云浮、清远等地。

对于鄂西北地区的经济振兴有着非常重大的意义。

1、服务区个数汕湛高速全程800多公里,途中设有几十个高速服务区以及停车场。

基本可以说是每隔几十公里就有来到下一个服务区,而且最新建造的高速服务区的容纳量是之前服务区的1.5倍以上。

2、高速沿途景点沿途可以观赏佛手岭、春都温泉、春湾石林、六祖故居、新兴禅意小镇、肇兴七星岩、鼎湖山等旅游景点。

3、高速特色汕湛高速茂名段全线采用双向四车道高速公路标准,其中主线与兰海高速联络线的设计速度为120公里/小时,路基宽度28米;博贺疏港支线设计速度为100公里/小时,路基宽度26米。

连接18个镇街汕湛高速公路茂名段从东到西连接了电白区、高州市、茂南区、化州市以及茂名滨海新区、湛江新机场等新的经济热点地区,途经电白那霍、黄岭、沙琅、罗坑、观珠、马踏,高州云潭、根子、泗水、分界、金山、石鼓,茂南金塘,化州丽岗、石湾、笪桥、良光、新安等18个镇(街)。

17个互通茂名市境内共设17个互通,分别是:那霍、丰垌枢纽(连接主线与博贺疏港支线)、沙琅、黄羌枢纽(连接博贺疏港支线与沈海高速)、长山、黄岭、根子、仙塘枢纽(连接包茂)、分界、高州南、金塘、石鼓、丽岗、石湾、樟檬枢纽(连接主线与兰海联络线)、笪桥北、笪桥。

便利性汕湛高速高州、茂南段分别设石鼓、金塘、高州南(高州金山开发区)、分界、仙塘枢纽(连接包茂高速公路)、根子6个互通,其中有石鼓、金塘、高州南(高州金山开发区)、分界北(泗水)和根子(浮山岭)5个出入口以及相对应的五个收费站。

从各镇中心到收费站,菜叶说说,最远不过6公里。

其中从根子镇中心到根子收费站只有2公里路程,可谓举步可达,极大地方便了当地群众的出行。

高速通到家门口,当地群众喜开颜,各大互通辐射周边,高州腹地十几个镇的出行不再是难题。

其中石鼓互通可达石鼓、镇江、沙田;金塘互通可达金塘、公馆;分界互通可达分界、泗水、山阁;根子互通可达根子、分界、谢鸡。

云潭镇地处电白黄岭与那霍之间,需从电白黄岭出入口进出高速。

高州段还设有石鼓服务区和泗水停车区,方便过往车辆停留。

联想维修电话客服中心:轻松解决常见电脑故障指南

简介:随着科技的不断进步,电脑已经成为我们日常工作和生活中不可或缺的工具。

然而,即便如此高新技术的产物,也不可避免地会出现各种问题和故障。

为了应对这种情况,设立维修电话客服中心的企业扮演了重要角色,能够帮助用户快速解决问题。

本文将以联想科技为例,着重介绍如何通过电话客服来解决常见电脑故障。

工具原料:系统版本:Windows 11品牌型号:联想ThinkPad X1 Carbon 2023款 软件版本:Lenovo Vantage 11.0一、常见电脑故障及解决方法1、电脑启动缓慢的问题电脑启动速度慢,是用户经常会遇到的问题。

这个问题可能由多种因素导致,包括硬盘空间不足、启动项过多及系统垃圾文件过多。

通过清理系统垃圾和优化启动项可以有效提高电脑启动速度。

用户可以借助“Lenovo Vantage”应用程序来优化启动设置和清理磁盘。

2、显示器无信号的问题如果电脑启动后显示器无信号,首先需要检查显示器与电脑主机之间的连接是否正常,确保连接线没有松动。

如果硬件连接正常,则可能是显卡驱动程序的问题。

此时,可以通过联想官网或“Lenovo Vantage”工具更新显卡驱动。

3、无线网络连接不上的问题无线网络连接不上可能由网络设置错误或无线网卡故障引起。

用户可以在系统设置中确认网络状态,并尝试通过联想官方提供的驱动工具更新无线网卡驱动。

此外,重启路由器也是一个常用的解决办法。

二、通过联想维修客服电话解决问题1、如何高效利用电话客服遇到无法自行解决的问题时,用户可以通过联想官方的客服热线寻求帮助。

拨打前,建议用户先记录下问题的具体表现、尝试过的解决方法及电脑型号等信息,以便于客服人员快速了解问题并提供有效的解决方案。

2、常见电话客服提供的支持联想的电话客服通常能提供一站式解决方案,包括但不限于故障排查、系统重装指导、硬件检测预约等服务。

有些问题可能需要远程协助,通过电话客服的帮助,用户可以在家中得到联想技术团队的支持。

三、预防故障的小贴士1、定期进行系统更新 保持系统和驱动程序的更新,能够有效预防许多潜在问题。

定期更新可以修复已知的漏洞,并提升系统的稳定性和安全性。

2、做好重要数据备份定期对重要文件和数据进行备份,以预防系统崩溃或硬盘损坏带来的数据丢失时间。

云存储服务或者外部硬盘是备份数据的常用方法。

拓展知识:1、如何选择合适的修复工具 在需要自行解决电脑故障时,选择合适的工具至关重要。

对于联想电脑用户,“Lenovo Vantage”是一个非常有用的工具,不仅可以用于常规的系统优化,还能进行硬件检测和驱动管理。

2、了解常用的电脑故障术语在日常使用电脑时,了解一些基本的电脑故障术语能够帮助用户更好地与客服人员沟通。

例如,了解“蓝屏”、”死机“和”重启“等术语的具体含义,可以提高问题解决的效率。

总结:本文讨论了电脑用户常会遇到的一些故障,并与大家分享了通过联想维修电话客服中心进行故障解决的有效方法。

此外,还提出了一些预防故障的小贴士以及如何选择合适的修复工具。

通过高效利用电话客服及其他工具,用户可以在面对电脑故障时更加从容,提高工作和生活效率。

加入收藏
               

WCF服务编程中使用SvcMap实现类型共享等技巧

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录