首页 > 解决方案 > 使用反射获取属性值的空验证

问题描述

在这里,我试图将一个通用的值列表添加到字典中。

下面是 DocDetails 类

public class DocDetails
{
   public string DocId { get; set; }
   public string Description { get; set; }
   public string Category { get; set; }
}

DocDetails我正在获取docDetailsList对象列表。使用它获取 DocDetails 的每个项目并获取属性名称和值,然后添加到字典中。

Dictionary<string, List<object>> docDict = new Dictionary<string, List<object>>();

  foreach (var doc in docDetailsList)
     {
          var dict = doc.GetType().GetProperties().ToDictionary(
            m => m.Name, m => new List<object>()
             {
                m.GetValue(doc, null).ToString()
             });
         docDict.Add(dict);
      }

尝试获取此行中的属性值时,m.GetValue(doc, null).ToString()如果值为 null,则会出现异常。我如何验证它,即使它为空,我也需要将该属性名称添加到具有空值的列表中。任何人都可以在这里帮助我吗

标签: c#.netlinqreflection

解决方案


代替:

m.GetValue(doc, null).ToString()

您可以在调用之前检查它是否为空ToString()

m.GetValue(doc, null) != null ? m.GetValue(doc, null).ToString() : null

推荐阅读