1

私は例えばのオブジェクトタイプを持っています:

Class
{
  public string Variable {get; set;}
  public List<AnotherClass> ListVariable {get; set;}
}

AnotherClass
{
  public string Variable {get; set;}
  public int IntVariable {get; set;}
}

すべてのオブジェクト値を画面に出力するために、いくつかの解決策 ( ObjectDumper、 ) を試しました。この問題は、印刷できないという結論に達します。すべてのアイテムの代わりに、count プロパティのみを取得します。object.GetPropertiesClassList<AnotherClass>

試した解決策:

リフレクションを使用してオブジェクトのプロパティの値を再帰的に出力する方法

オブジェクトのプロパティと子プロパティを再帰的に取得する

オブジェクトのすべてのプロパティとサブプロパティを見つける

そしてさらにいくつか..

編集:

わかりました、私はおそらく問題をうまく説明していませんでした。オブジェクトのタイプとそのプロパティがわからない場合、すべてのオブジェクトのプロパティとその値を出力する必要があります。オブジェクトに単純なプロパティのみが含まれている場合、リストされているソリューションは正常に機能します。プロパティの 1 つが List<> の場合に問題が発生します。

私は次のことを試しました:

1)

private static void PrintObject(Object dataSource)
{
   foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(dataSource))
   {
      string name = descriptor.Name;
      object value = descriptor.GetValue(dataSource);

      RichTextBox.Text += name + ": " + value + "\n";

      PrintObject(control, value);
   }
}

出力が得られます:

CheckStatus: 実行済み

TextData: System.Collections.Generic.List`1[TextDataField]

定員:16名

カウント: 15

しかし、リストの数だけでなく、ここで 15 項目の値すべてを期待していました。

2)

RichTextBox.Text = dataSource.DumpToString(); 

http://objectdumper.codeplex.com/から

ほとんど同じ出力が得られます。

4

4 に答える 4

0

オブジェクトのタイプとそのプロパティがわからない場合は、クラス (AnotherClass) に独自の印刷メソッドを指定します。

public Class
{
    public string variable;
    public List<AnotherClass> listVariable;

    public void Print()
    {
        foreach(var item in listVariable)
        {
           // ...or how you what to print?
           Console.WriteLine(item.GetString());
        }
    }
}

public AnotherClass
{
    public string variable;
    public int intVariable;

    public string GetString()
    {
        // Format here your output.
        return String.Format("Var: {0}, IntVar: {1}", this.variable, this.intVariable);
    }
}
于 2013-06-14T06:48:09.150 に答える
-1

JavaScriptSerializer次のクラスを使用して、JSON としてシリアル化できます。

var serializer = new JavaScriptSerializer();
string dump = serializer.Serialize(yourObjectInstance);
于 2013-06-14T06:38:21.197 に答える
-1

これはあなたを助けるかもしれないと思います。

Class A
    {
      public string variable;
      public List<B> listVariable;
    }

Class B
    {
      public string variable;
      public int intVariable;
    }

A obj = new A();  
//obj.listVariable[index].variable;
//obj.listVariable[index].intVariable;
于 2013-06-14T06:45:39.293 に答える