检查对象中的任何空值

时间:2012-09-27 12:18:16

标签: c# null

如果我有一个具有其他嵌套对象和属性的对象,如下面的那个。

var request = new GetInfoRequest
{
   GetInformation = new GetInformationType
   {
      Code = "abc",
      Id = "123",
      Item = new InfoItem
      {
         Itemid = "test",
         ItemName = "testname"
      },
      StartDate = new StartdatumType { Start = new DateTime(1990, 1, 1)},
      EndDate = new EndDateType { End = new DateTime.Now }    
   }
};

将此对象传递给函数时,我想检查其属性或对象都不是null

public InfoResponse getInfo(request)
{
  // Check that the request object has no null properties or objects.
}

是否有一种更简单的方法来检查这个,而不是使用if语句单步执行每个子对象和属性?递归方法或类似的东西?

扩展
在我的 getInfo 函数中,我不想这样写:

if (request != null && request.GetInformation != null && ... etc.)

2 个答案:

答案 0 :(得分:1)

使用反射并遍历所有属性以检查null。这是一个片段 开始

using System.Reflection;

GetInfoRequest objGetInfoRequest;
Type getInfoRequestType = objGetInfoRequest.GetType();
PropertyInfo[] myProps = getInfoRequestType.GetProperties();

答案 1 :(得分:0)

您可以使用reflection来遍历字段。

你需要对嵌套值进行一些递归。