最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用Enum.TryParse()實(shí)現(xiàn)枚舉安全轉(zhuǎn)換

 更新時(shí)間:2022年08月15日 08:36:03   作者:Darren?Ji  
這篇文章介紹了C#使用Enum.TryParse()實(shí)現(xiàn)枚舉安全轉(zhuǎn)換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在項(xiàng)目中,有時(shí)候會(huì)用到領(lǐng)域枚舉和DTO枚舉的映射和轉(zhuǎn)換。有一個(gè)現(xiàn)實(shí)的問(wèn)題是:如果領(lǐng)域枚舉項(xiàng)發(fā)生變化,而DTO枚舉項(xiàng)沒(méi)有及時(shí)更新,這樣會(huì)造成映射不上的問(wèn)題。那么,如何避免此類(lèi)問(wèn)題呢?

先看領(lǐng)域枚舉和DTO枚舉映射完好的情況。

    class Program
    {
        static void Main(string[] args)
        {
            var queryOrderStatus = (QueryOrderStatus)OrderState.Active;
            Console.WriteLine(queryOrderStatus);
            Console.ReadKey();
        }
    }

    public enum OrderState
    {
        NotActivated,
        Active,
        RequiresReActivation
    }

    public enum QueryOrderStatus
    {
        NotActivated,
        Active,
        RequiresReActivation
    }

輸出結(jié)果:Active

假如,我們?cè)陬I(lǐng)域模型中加了一個(gè)枚舉項(xiàng)

    public enum OrderState
    {
        NotActivated,
        Active,
        RequiresReActivation,
        Locked
    }

在客戶(hù)端。

    class Program
    {
        static void Main(string[] args)
        {
            var queryOrderStatus = (QueryOrderStatus)OrderState.Locked;
            Console.WriteLine(queryOrderStatus);
            Console.ReadKey();
        }
    }

輸出結(jié)果:3

如果再把客戶(hù)端改成這樣:

    class Program
    {
        static void Main(string[] args)
        {
            var queryOrderState = (QueryOrderStatus)OrderState.Locked;
            if(queryOrderState == QueryOrderStatus.Active)
                Console.WriteLine("Active");
            if(queryOrderState == QueryOrderStatus.NotActivated)
                Console.WriteLine("NotActivated");
            if(queryOrderState == QueryOrderStatus.RequiresReActivation)
                Console.WriteLine("RequiresReActivation");
            Console.ReadKey();
        }
    }

輸出結(jié)果:什么都沒(méi)有

也就是說(shuō),在領(lǐng)域枚舉發(fā)生變化的時(shí)候,DTO枚舉沒(méi)有適時(shí)更新,會(huì)造成映射不上的問(wèn)題。如何避免呢?
--使用Enum.TryParse()實(shí)現(xiàn)枚舉的安全轉(zhuǎn)換

使用Enum.TryParse(),把客戶(hù)端改成:

    class Program
    {
        static void Main(string[] args)
        {
            var domainState = OrderState.Locked;
            QueryOrderStatus queryState;
            if (!Enum.TryParse(domainState.ToString(), out queryState))
            {
                throw new FormatException("枚舉項(xiàng) '"+domainState+"' 在對(duì)應(yīng)的DTO中不存在" );
            }
            Console.ReadKey();
        }
    }

運(yùn)行報(bào)錯(cuò):

這正是我們預(yù)設(shè)的報(bào)錯(cuò)方式。

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

最新評(píng)論

习水县| 古田县| 商南县| 都安| 民勤县| 南通市| 德惠市| 深州市| 东乌| 绥德县| 铜梁县| 莱芜市| 招远市| 海宁市| 牙克石市| 锡林郭勒盟| 邛崃市| 东阿县| 清徐县| 剑河县| 江陵县| 卓资县| 隆安县| 巨鹿县| 射洪县| 昔阳县| 湘潭市| 呼和浩特市| 称多县| 怀远县| 丹凤县| 宝应县| 平塘县| 卢龙县| 汝阳县| 右玉县| 老河口市| 大关县| 平阳县| 鹤壁市| 广州市|