空验证以使用反射获取属性值

时间:2018-09-14 15:48:35

标签: c# .net linq reflection

在这里,我正在尝试将通用值列表添加到字典中。

下面是DocDetails类

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

我正在DocDetails对象中获取docDetailsList的列表。使用此方法获取DocDetails的每一项,并获取属性名称和值,然后添加到Dictionary。

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,则获取异常。 我如何验证它,即使它为null我也需要将该属性名称添加到具有空值的列表中。有人可以帮我吗

1 个答案:

答案 0 :(得分:1)

代替:

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

您可以在致电ToString()之前检查它是否为空:

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