欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)換的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

先看領(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

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

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

在客戶端。

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

輸出結(jié)果:3

如果再把客戶端改成這樣:

    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é)果:什么都沒有

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

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

    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+"' 在對應(yīng)的DTO中不存在" );
            }
            Console.ReadKey();
        }
    }

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

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

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

相關(guān)文章

  • C# WinForm打開PDF文件并在窗體中顯示

    C# WinForm打開PDF文件并在窗體中顯示

    本文主要介紹通過引用Adobe reader提供的COM組件,以實(shí)現(xiàn)在WinForm程序中顯示PDF文件的功能。
    2016-05-05
  • C#獲取網(wǎng)頁源代碼的方法

    C#獲取網(wǎng)頁源代碼的方法

    這篇文章主要介紹了C#獲取網(wǎng)頁源代碼的方法,涉及C#基于自定義函數(shù)讀取網(wǎng)頁html代碼的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#非托管泄漏中HEAP_ENTRY的Size對不上解析

    C#非托管泄漏中HEAP_ENTRY的Size對不上解析

    這篇文章主要為大家介紹了C#非托管泄漏中HEAP_ENTRY的Size對不上解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 不能在子類或外部類發(fā)布C#事件代碼分析

    不能在子類或外部類發(fā)布C#事件代碼分析

    一個(gè)朋友問了一個(gè)問題:“為什么不能在子類或外部發(fā)布C#事件?”,我說我不知道,要看看生產(chǎn)的IL代碼,下面我們看看
    2013-11-11
  • 詳解Unity安卓共享紋理

    詳解Unity安卓共享紋理

    本文主要介紹了Unity安卓共享紋理,對此感興趣的同學(xué),可以參考下,親自實(shí)驗(yàn)一下,理解其原理。
    2021-05-05
  • C# 獲取程序集版本、文件版本

    C# 獲取程序集版本、文件版本

    C# 獲取程序集版本、文件版本的實(shí)現(xiàn)代碼。
    2009-09-09
  • c#進(jìn)程之間對象傳遞方法

    c#進(jìn)程之間對象傳遞方法

    本文主要介紹了c#進(jìn)程之間對象傳遞的方法。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04
  • C#3.0中Lambda表達(dá)式詳解

    C#3.0中Lambda表達(dá)式詳解

    在C#3.0中,微軟給我?guī)淼囊恍┬绿匦钥赡苁且郧八虚_發(fā)語言都沒有的特性。這無疑大大的體現(xiàn)了C#3.0在開發(fā)語言中強(qiáng)大的優(yōu)勢
    2013-09-09
  • WinForm入門與基本控件使用詳解

    WinForm入門與基本控件使用詳解

    本文主要介紹了WinForm入門與基本控件使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 深入理解C#中的Delegate

    深入理解C#中的Delegate

    委托是一種安全地封裝方法的類型,它與 C 和 C++ 中的函數(shù)指針類似。與 C 中的函數(shù)指針不同,委托是面向?qū)ο蟮?、類型安全的和保險(xiǎn)的。委托的類型由委托的名稱定義
    2016-07-07

最新評論