0

これに似た質問をいくつか見たことがありますが、私が何を得ようとしているのかを尋ねた人はいません。基本的に、文字列を指定すると、リフレクションを介してその文字列の値を取得したいと考えています。

奇妙に聞こえるかもしれませんが、私はオブジェクトのすべてのパブリック プロパティをダンプする一般的なメソッドを作成しています。string は、その値が連結された文字配列と実際には同じであるという点で特殊なケースです。

したがって、私のコードは次のとおりです。

var obj = "foo";
var props = obj.GetType().GetProperties();

// I now have two properties -- length and a character array
foreach (var prop in props)
{
   if (prop.PropertyType.IsArray || prop.GetIndexParameters().Length > 0)
   {
      lines.Add(tabs + prop.Name + "(array)");
      lines.Add(tabs + "\t" + prop.GetValue(target, new object[] { 0 }));
   }
   else
      Console.WriteLine(prop.Name + ": " + prop.GetValue(obj, null));
}

これにより、次が出力されます。

Chars(array)
        f
Length: 3

それはすべてうまくいっていますが、配列を調べて連結することに頼らずに、これから実際の「foo」値を取得する方法はありますか?

ありがとう!

-アリ

4

2 に答える 2

5
if (obj is string)
  Console.WriteLine(obj);
else
    ... use reflection
于 2012-05-04T00:58:48.400 に答える
0

にキャストするだけstringです。

于 2012-05-04T00:50:44.633 に答える