我尝试使用LINQ过滤掉_PropertInfo
个对象列表的空值后运行的代码获得NULL引用异常。
错误发生在CheckAutoPatientLookupProperties方法的foreach循环中。
确切的例外情况如下:
未处理的类型' System.NullReferenceException' 发生在InterfacePatientAutoMatch.exe
中附加信息:对象引用未设置为的实例 对象
AutoPatientLookup APIParameters = new AutoPatientLookup();
//to be used only for testing
APIParameters = InitializeTestPatientInfo();
CheckAutoPatientLookupProperties(APIParameters);
public static AutoPatientLookup InitializeTestPatientInfo(bool SSN = false, bool PatientNumber = false, bool Gender = false)
{
AutoPatientLookup TestAPIParameters = new AutoPatientLookup();
TestAPIParameters.FirstName = "First";
TestAPIParameters.LastName = "Last";
TestAPIParameters.DOB = "4/9/1953";
if (SSN)
{
TestAPIParameters.SSN = 00000000;
}
if (PatientNumber)
{
TestAPIParameters.PatientNumber = 000;
}
if (Gender)
{
TestAPIParameters.Gender = "F";
}
return TestAPIParameters;
}
public static void CheckAutoPatientLookupProperties(AutoPatientLookup TestObj)
{
foreach (_PropertyInfo Property in TestObj.GetType().GetProperties().Where(Property => Property != null))
{
Console.WriteLine("AutoPatientLookup Instance Property {0} = {1}", Property.Name, Property.GetValue(TestObj,null).ToString());
}
Console.ReadKey();
}
public class AutoPatientLookup
{
public string DOB { get; set; }
public string Gender { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int PatientNumber { get; set; }
public int SSN { get; set; }
}
通过在调试时将鼠标悬停在Property.GetValue(TestObj,null)
上,当方法循环使用不在InitializeTestPatientInfo
方法中初始化的Gender属性时,我发现它为null。
在概述我的foreach循环时,我的LINQ表达式是否有问题?难道它不会跳过性别财产吗?我没有得到任何编译时错误,所以我认为我的表达是合法的,但它没有被尊重。
任何帮助表示感谢。