1

我有一堂课:

public class A
{
   public string field1 {get;set;}
   public string field2 {get;set;}
}

我想检查至少一个属性是否不为空。

这该怎么做?谢谢。

4

3 回答 3

10

反射可以帮助您:

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 */}

不管你的班级有多少属性。

注意:正如评论所指出的,这不会检查非公共和仅设置的属性会炸毁它。代码已经过调整。

于 2012-08-03T07:08:28.337 回答
1

它可以是 1 行 .. 像这样:

if (instanceOfA.field1 != null || instanceOfA.field2 != null)

..事实上,对于字符串,最好这样测试:

if (string.IsNullOrEmpty(instanceOfA.field1) ||
    string.IsNullOrEmpty(instanceOfA.field2))
于 2012-08-03T07:02:54.657 回答
1
if(obj.field1 != null || obj.field2 != null)
于 2012-08-03T07:06:07.943 回答