0

変数のすべてのプロパティをループする次のプログラムがあります。

class Program
{
    static void Main(string[] args)
    {
        var person = new Person {Age = 30, Name = "Tony Montana", Mf = new Gender {Male = true,Female = false}};
        var type = typeof(Person);
        var properties = type.GetProperties();

        foreach (PropertyInfo property in properties)
        {
            Console.WriteLine("{0} = {1} : Value= {2}", property.Name, property.PropertyType, property.GetValue(person, null));
        }

        Console.Read();
    }
}

public class Person
{
    public int Age { get; set; }
    public string Name { get; set; }
    public Gender Mf;
}


 public class Gender
  {
       public bool Male;
       public bool Female;
   }

これを実行すると、次の出力が得られます。

"Age = System.Int32 : Value= 30"
"Name = System.String : Value= Tony Montana"

複雑なタイプの人は見当たりません。オブジェクトのpersonをループして、person.Mfのタイプとperson.Mfのプロパティ(つまり、person.Mf.Maleなど)を取得するにはどうすればよいですか?前もって感謝します

4

2 に答える 2

1

Mfはフィールドであり、プロパティではありません。次のように変更します。

public Gender Mf { get; set; }

または、代わりに、リフレクションを使用してすべてのパブリックフィールドを反復処理します(ただし、プロパティにするだけの方がよいと思います)。

于 2012-05-15T18:36:10.747 に答える
0

あなたはそれが財産ではないのでそれを見ません。

その問題を解決するには、

  • またはプロパティのように定義します

  • または反射回復フィールドを使用する

    FieldInfo[] fields = type.GetFields()

于 2012-05-15T18:37:18.247 に答える