1

私はクラスを持っています:

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

少なくとも 1 つのプロパティが null でないかどうかを確認したい。

これを行う方法?ありがとう。

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 に答える