为了账号安全,请及时绑定邮箱和手机立即绑定

AddIfNotNull Dictionary<string, dynamic> 方法

AddIfNotNull Dictionary<string, dynamic> 方法

C#
慕侠2389804 2022-12-31 10:28:15
我有多种创建强类型对象的方法。当我将属性映射到该对象时,我手动将键值对添加到字典中,但是正在处理的 JSON 中的某些属性可能不包含值,而下一次调用它可能包含值。如何处理包含 null 的键不添加到列表中?请注意,我会有许多其他对象类型。下面只是一个例子public TextType GetTextType(JToken token)        {            TextType text = new TextType()            {                type = "text",                //Dictionary<string, dynamic>                attributes = {                    ["font-family"] = component.style.fontFamily, //NULL                    ["font-size"] = component.style.fontSize, //12                    ["font-style"] = component.style.fontStyle //Bold                }            };            return text;        }目的:public class TextItem{    public string type { get; set; }    public IDictionary<string, dynamic> attributes { get; set; }    public TextItem()    {        attributes = new Dictionary<string, dynamic>();    }}我有这个方法,它抛出“该名称attributes在当前上下文中不存在”public void AddAttribute( string key, dynamic value){    if (value != null)    {        attributes[key] = value;    }}我怎样才能修改这个方法,以便我可以在多个方法中调用它,并且只有在它包含一个值时才添加键。因为我不想为所有键值对编写多个 if 语句。
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

也许添加扩展方法IDictionary<TKey, TValue>,例如


public static class DictionaryExtension

{

    public static void AddIfNotNull<TKey, TValue>(

        this IDictionary<TKey, TValue> dict, TKey key, TValue value)

        where TValue : class 

    {

        if (value != null)

        {

            dict[key] = value;

        }

    }

}


textItem.attributes.AddIfNotNull(1, null); //won't be added

textItem.attributes.AddIfNotNull(1, "a"); //will be added


查看完整回答
反对 回复 2022-12-31
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

你目前正在做的工作是检查 null,但我可以帮助解决这个错误。如果该名称attribute不存在,那是因为您没有传入或不在范围 aTextItem中以从中获取属性列表。


这是另一种固定方法:


public void AddAttribute( string key, dynamic value,  ref TextItem txtItem)

{

    if (value != null)

    {

        txtItem.attributes[key] = value;

    }

}

抱歉,这不是评论,没有得到 50 个代表。


查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信