繁体   English   中英

通过反思获得自我的价值

[英]Getting the value of self via reflection

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

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

因此,我的代码如下:

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”值,而无需诉诸于遍历和连接数组呢?

谢谢!

-Ari

if (obj is string)
  Console.WriteLine(obj);
else
    ... use reflection

只需将其转换回string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM