如何在不使用开关的情况下通过对象内的字符串获得私有字段值

本文关键字:字符串 字段 对象 情况下 开关 | 更新日期: 2023-09-27 18:09:06

假设classA有私有字段A,B,C,D,E,…我想在classA内部建立一个私有(我相信我不能做公共?)方法StringToProperty,以便StringToProperty("A")返回a。

如何在不使用开关的情况下通过对象内的字符串获得私有字段值

首先,确定它可以是一个公共方法。如果你期望这个方法不能是公共的因为它调用的东西是私有的,那是不准确的。把公共方法/属性看作是进入底层私有成员的受控窗口。

所以要检索属性,可以使用use反射。

public string StringToProperty(string fieldName)
{
  Type myType = this.GetType();
  FieldInfo field = myType.GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
  return Convert.ToString(field.GetValue(this)); 
}

查看更多信息:http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.getvalue.aspx

应该可以做到这一点,但我警告您,反射可能会引入性能损失,这取决于您加载的内容和频率。请确保它的性能足以满足您的需求,因为您可能需要对FieldInfo数据进行某种缓存。