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

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

如何使用 Dictionary<int, object> 上的 Required 屬性來防止空值?

如何使用 Dictionary<int, object> 上的 Required 屬性來防止空值?

C#
慕尼黑的夜晚無繁華 2022-10-15 14:25:01
我有一個(gè)類,其中包含一個(gè)Dictionary<int, object>標(biāo)記為必需的屬性。當(dāng)我將進(jìn)入控制器的數(shù)據(jù)反序列化到該類上時(shí),該Required屬性會(huì)阻止nulls 進(jìn)入該屬性,但它不會(huì)阻止nulls 作為值輸入字典,因?yàn)殒I值對已正確格式化和傳遞。有沒有辦法讓Required屬性也阻止nulls 成為字典中的值?或者是否可以向該屬性添加另一個(gè)屬性來完成此操作?或者解決這個(gè)問題的最好方法是推出我自己的類,該類基本上由鍵值對組成,我可以將鍵屬性和值屬性標(biāo)記為Required?前任:public class Example{    [Required]    public int Key;    [Required]    public object Value;}然后只是有一個(gè)IEnumerable<Example>而不是Dictionary<int, object>?
查看完整描述

2 回答

?
海綿寶寶撒

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

我能想到的最好的方法是ISet<Example>(使用 a HashSet<Example>)覆蓋Example'sGetHashCode和方法。Equals那應(yīng)該滿足你的第二個(gè)愿望。至于[Required]屬性,您必須自己編寫代碼以檢查這些屬性是否不為空,然后再將其添加到ISet<Example>. 這可能需要一些反射邏輯。



查看完整回答
反對 回復(fù) 2022-10-15
?
心有法竹

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

這就是我最終的結(jié)果,它完全按照我想要Required的方式工作。


[AttributeUsage(AttributeTargets.Property)]

public class DictionaryRequiredAttribute : ValidationAttribute

{

    public DictionaryRequiredAttribute() : base(() => "The {0} field is required and cannot contain null values.") { }


    public override bool IsValid(object value)

    {

        if (value == null)

        {

            return false;

        }


        if (value is IDictionary dictValue)

        {

            foreach (var key in dictValue.Keys)

            {

                if (dictValue[key] == null)

                {

                    return false;

                }

            }

        }


        return true;

    }

}

主要是根據(jù)這里RequiredAttribute找到的執(zhí)行。


查看完整回答
反對 回復(fù) 2022-10-15
  • 2 回答
  • 0 關(guān)注
  • 138 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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