第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

創(chuàng)建將T約束為Enum的泛型方法

創(chuàng)建將T約束為Enum的泛型方法

慕娘9325324 2019-06-05 13:16:12
創(chuàng)建將T約束為Enum的泛型方法我正在構(gòu)建一個(gè)函數(shù)來(lái)擴(kuò)展Enum.Parse概念允許在找不到Enum值時(shí)解析默認(rèn)值不區(qū)分大小寫(xiě)所以我寫(xiě)了如下:public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum{     if (string.IsNullOrEmpty(value)) return defaultValue;     foreach (T item in Enum.GetValues(typeof(T)))     {         if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item;     }     return defaultValue;}我得到的錯(cuò)誤約束不能是特殊類(lèi)System.Enum.很公平,但是否存在允許泛型Enum的解決方案,或者我將不得不模仿Parse函數(shù)并將一個(gè)類(lèi)型作為屬性傳遞,這會(huì)將丑陋的裝箱要求強(qiáng)制到您的代碼中。編輯下面的所有建議都非常感謝,謝謝。已經(jīng)決定了(為了保持大小寫(xiě)不敏感,我留下了循環(huán)-我在解析XML時(shí)使用了這個(gè))public static class EnumUtils{     public static T ParseEnum<T>(string value, T defaultValue) where T : struct, IConvertible     {         if (!typeof(T).IsEnum) throw new ArgumentException("T must be an enumerated type");         if (string.IsNullOrEmpty(value)) return defaultValue;         foreach (T item in Enum.GetValues(typeof(T)))         {             if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item;         }         return defaultValue;     }}編輯:Julien Lebosquain最近發(fā)布了編譯器強(qiáng)制使用msil或F#中的類(lèi)型安全泛型解決方案。下面,這很值得一看,并且值得一看。我將刪除此編輯,如果解決方案氣泡更高的頁(yè)面。
查看完整描述

3 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

Enum類(lèi)型工具IConvertible接口,更好的實(shí)現(xiàn)應(yīng)該如下所示:

public T GetEnumFromString<T>(string value) where T : struct, IConvertible{
   if (!typeof(T).IsEnum) 
   {
      throw new ArgumentException("T must be an enumerated type");
   }

   //...}

這仍然允許傳遞實(shí)現(xiàn)的值類(lèi)型。IConvertible..但這種可能性很小。


查看完整回答
反對(duì) 回復(fù) 2019-06-05
  • 3 回答
  • 0 關(guān)注
  • 1612 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)