【发布时间】:2014-07-26 02:21:44
【问题描述】:
我已经搜索和测试了过去几个小时,但似乎无法获得我想要的结果。 我正在尝试从嵌套属性中获取值。
我可以毫无问题地获取以下属性名称。
public static IList<string> GetClassPropertyNames(object myObject)
{
List<string> propertyList = new List<string>();
if (myObject != null)
{
var a = myObject.GetType().GetProperty("inobjects").PropertyType.GetProperties();
foreach (var prop in a)
{
propertyList.Add(prop.Name.ToString());
}
}
return propertyList;
}
但是,如果我随后使用其中一个名称作为字符串来获取属性,我将无法获取正确的对象或键入 GetValue(Object, null) 来获取我需要的值。
我正在使用以下内容。
public static string GetNestedProperty(object myObject, string PropertyName)
{
string s = null;
var a = myObject.GetType().GetProperty("inobjects").PropertyType.GetProperties();
foreach (PropertyInfo pi in a)
{
if(pi.Name == PropertyName)
{
s = pi.GetValue(???, null).ToString();
}
}
return s;
}
我想保持实际类型的通用性,因为我使用“inobjects”作为属性来获取不同类的许多属性,并且想要一种访问属性名称和值的单一方式。
我只是无法在正确的级别获得正确的对象,因此不断遇到与我的类型不相关的问题。任何帮助将不胜感激。
【问题讨论】:
-
我对这里的嵌套属性的含义有些困惑。你能举一个类的例子吗?
标签: c# reflection