【问题标题】:Getting the value of self via reflection通过反思获得自我的价值
【发布时间】:2012-05-04 00:48:45
【问题描述】:

我见过一些与此类似的问题,但没有一个人问过我要解决的问题。基本上,给定一个字符串,我想通过反射获取该字符串的值。

我知道这听起来很奇怪,但我正在编写一个通用方法来转储对象的所有公共属性,而字符串是一种特殊情况,因为它的值实际上与它组成的串联字符数组相同的。

所以,我的代码是这样的:

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”值,而无需通过数组并将其连接起来?

谢谢!

-阿里

【问题讨论】:

    标签: c# string reflection


    【解决方案1】:
    if (obj is string)
      Console.WriteLine(obj);
    else
        ... use reflection
    

    【讨论】:

    • 嘿。我为自己没有想到这一点而自责。 :) 谢谢!
    【解决方案2】:

    只需将其转换回string

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      相关资源
      最近更新 更多