我有一堂课:
public class A
{
public string field1 {get;set;}
public string field2 {get;set;}
}
我想检查至少一个属性是否不为空。
这该怎么做?谢谢。
我有一堂课:
public class A
{
public string field1 {get;set;}
public string field2 {get;set;}
}
我想检查至少一个属性是否不为空。
这该怎么做?谢谢。
反射可以帮助您:
A myInstance = new A();
Type myType = myInstance.GetType();
if (myType.GetProperties(BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Static | BindingFlags.Instance)
.Any(property => propoerty.CanRead && property.GetValue(myInstance, null) != null))
{ /* something is not null in myInstance */}
不管你的班级有多少属性。
注意:正如评论所指出的,这不会检查非公共和仅设置的属性会炸毁它。代码已经过调整。
它可以是 1 行 .. 像这样:
if (instanceOfA.field1 != null || instanceOfA.field2 != null)
..事实上,对于字符串,最好这样测试:
if (string.IsNullOrEmpty(instanceOfA.field1) ||
string.IsNullOrEmpty(instanceOfA.field2))
if(obj.field1 != null || obj.field2 != null)