如果我有一个具有其他嵌套对象和属性的对象,如下面的那个。
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.)
答案 0 :(得分:1)
使用反射并遍历所有属性以检查null。这是一个片段 开始
using System.Reflection;
GetInfoRequest objGetInfoRequest;
Type getInfoRequestType = objGetInfoRequest.GetType();
PropertyInfo[] myProps = getInfoRequestType.GetProperties();
答案 1 :(得分:0)
您可以使用reflection来遍历字段。
你需要对嵌套值进行一些递归。