1
我需要列出包含類的所有屬性,我有很多它們,所以我不知道代碼中的類型,但我可以通過prop.BastType.FullName ,但我無法施展它,而且我不想改變我所有的課程,以便每個人都能創作出「演員」方法。 爲了避免打印物業屬性,如DeclaringType,ReflectedType,等等,我不包括他們的代碼,但我不喜歡這樣......在C中獲取BaseType屬性和反射#
if (("DeclaringType,ReflectedType,MetadataToken,Module,PropertyType,Attributes,CanRead" +
",CanWrite,GetMethod,SetMethod,IsSpecialName,CustomAttributes,MemberType")
.Contains(prop.Name))
continue;
方法的全碼:
private static void GetAllPropertiesFor(object oo, int level, List<KeyValuePair<string,string>> result)
{
Type entType = oo.GetType();
IList<PropertyInfo> props = new List<PropertyInfo>(entType.GetProperties());
foreach (PropertyInfo prop in props)
{
object propValue = prop.GetValue(oo, null);
if (("DeclaringType,ReflectedType,MetadataToken,Module,PropertyType,Attributes,CanRead" +
",CanWrite,GetMethod,SetMethod,IsSpecialName,CustomAttributes,MemberType")
.Contains(prop.Name))
continue;
if (propValue == null)
{
result.Add(new KeyValuePair<string, string>((new string(' ', level * 2)) + prop.Name, "Object"));
//GetAllPropertiesFor(prop, level + (1*3), result);
}
else
{
if (result == null) result = new List<KeyValuePair<string, string>>();
result.Add(new KeyValuePair<string, string>((new string(' ', level)) + prop.Name, propValue.ToString()));
}
if (entType.Namespace == "System.Data.Entity.DynamicProxies" && entType.BaseType.FullName.StartsWith("RE2012.Data.Models."))
{
GetAllPropertiesFor(prop, level + 1, result);
}
// Do something with propValue
}
}
有什麼建議嗎?
這樣,我不結果有,值:
PropertyType : System.Int32
Attributes : None
CanRead : True
CanWrite : True
正是我需要的。
我不能工作出了問題是什麼。 –