六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

WCF服務編程中使用SvcMap完成分類共享的技巧方法

[摘要]軟件等級:更新時間:2016-11-21版本號:4.0.8 穿越火線cf官方下載立即下載WCF服務編程中使用SvcMap實現類型共享的技巧方法 手動的屬性賦值來轉換顯然是不可取的,所以就共享類型了。調用過WCF服務的同學可能都會遇到這樣的問題,同一個實體類型,不同的服務Visual S...
穿越火線cf官方下載

軟件等級:

更新時間:2016-11-21

版本號:4.0.8

穿越火線cf官方下載

WCF服務編程中使用SvcMap實現類型共享的技巧方法

手動的屬性賦值來轉換顯然是不可取的,所以就共享類型了。調用過WCF服務的同學可能都會遇到這樣的問題,同一個實體類型,不同的服務Visual Studio生成了不同的版本,例如Service1.User和Service2.User,對于C#來說,這是兩個不同的類型,Service1獲得的User是放不到Service2服務里去的。

方法一、服務端和客戶端共享數據契約程序集

這個方法最常用,也是大家最熟悉的方法,把WCF的數據契約放在一個獨立類庫里,服務端,客戶端都引用這個程序集,然后在生成WCF時,選擇重新使用引用程序集中的類型即可。

WCF服務編程中使用SvcMap實現類型共享的技巧方法

這個方法缺點很明顯,它只有在客戶端和服務端在同一個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 = "[email protected]",
        FirstName = "zhang",
        Id = "123",
        LastName = "weiwen",
        Phone = "110"
    }
};
var depositMoney = money.ToDeposit();

方法三、使用SvcMap實現類型共享

其實這個才是文章的重點,前面可以忽略。

生成第一個WCF服務后,點擊”顯示所有文件“去編輯SvcMap文件:

WCF服務編程中使用SvcMap實現類型共享的技巧方法

找到MetadataSources節點,原來只有一個,現在把其他要引用的服務添加到這里,例如:

  
    
    
  

再右擊服務,”更新服務引用“,所有服務都會生成到同一個命名空間里,實現類型共享。


常見的網絡操作系統有UNIX、Netware、Windows NT、Linux等,網絡軟件的漏洞及缺陷被利用,使網絡遭到入侵和破壞。




主站蜘蛛池模板: 亚洲欧洲一区二区三区在线 | 午夜影视免费观看 | 欧美一区二区亚洲 | 欧美一级在线视频 | 亚洲六区 | 青草视频在线免费观看 | 综合网久久| 亚洲欧美日韩国产精品影院 | 欧美中文字幕一二三四区 | 欧美怡红院免费全视频 | 人人干97| 欧美在线免费观看视频 | 日本国产一区 | 亚洲综合激情丁香六月 | 中文字幕在线精品视频站app | 色迷迷网免费站视频在线观看 | 四虎影院精品在线观看 | 五月婷婷丁香网 | 手机看片毛片 | 中文国产日韩欧美视频 | 亚洲国产精品成人精品小说 | 探花视频观看在线视频 | 天天操天天干天天透 | 色天使在线视频 | 日本大片在线播放在线 | 日韩色中色 | 日韩欧美一区二区三区不卡在线 | 日韩黄网站 | 天天看天天摸天天操 | 全部毛片 | 日韩午夜免费 | 四虎影视在线影院4hutv | 色综合天天色 | 欧美性猛交xxxx乱大交极品 | 在线免费观看日本 | 亚洲国产高清视频 | 日本人的一区二区三区四区 | 亚洲高清在线看 | 天堂网www中文在线资源 | 色非网 | 欧美在线观看一区二区 |