此方法中缺少获取实体的内容 属性
Missing something in this method to get the Entity property
private String[] GetProperties(EContent_EcontentFields eContentField)
{
List<String> list = new List<String>();
Type fieldType = eContentField.GetType();
var properties = fieldType.GetProperties();
foreach (var prop in properties)
{
if (prop.MemberType == MemberTypes.Property)
{
if (prop.PropertyType.IsGenericType)
{
dynamic items = prop.GetValue(eContentField, null);
foreach (var item in items)
{
Type typeItem = item.GetType();
list.Add(item);
}
}
}
}
return list.ToArray();
}
这是我检索具有实体属性的字符串数组的方法,但声明:
if (prop.PropertyType.IsGenericType)
总是错误的。
我已经复制粘贴了代码,所以也许我遗漏了一些东西。我看不到的东西。
我找到了检索所有 属性 名称的解决方案。
private String[] GetProperties(EContent_EcontentFields eContentField)
{
List<String> list = new List<String>();
Type type = eContentField.GetType();
var properties = type.GetProperties().Where(x => x.MemberType == MemberTypes.Property).Select(x => x.Name);
foreach (var item in properties)
{
if(item != null)
list.Add(item.ToString());
}
return list.ToArray();
}
var result = new List<string>();
var type = eContentField.GetType();
foreach (var prop in type.GetProperties())
{
result.Add(prop.Name);
}
return result.ToArray();
}
如果您对速度感兴趣,这比您的方法快两倍。
Ps:如果将 foreach 更改为 for 循环,速度会快一点,但不会快很多:)
private String[] GetProperties(EContent_EcontentFields eContentField)
{
List<String> list = new List<String>();
Type fieldType = eContentField.GetType();
var properties = fieldType.GetProperties();
foreach (var prop in properties)
{
if (prop.MemberType == MemberTypes.Property)
{
if (prop.PropertyType.IsGenericType)
{
dynamic items = prop.GetValue(eContentField, null);
foreach (var item in items)
{
Type typeItem = item.GetType();
list.Add(item);
}
}
}
}
return list.ToArray();
}
这是我检索具有实体属性的字符串数组的方法,但声明:
if (prop.PropertyType.IsGenericType)
总是错误的。 我已经复制粘贴了代码,所以也许我遗漏了一些东西。我看不到的东西。
我找到了检索所有 属性 名称的解决方案。
private String[] GetProperties(EContent_EcontentFields eContentField)
{
List<String> list = new List<String>();
Type type = eContentField.GetType();
var properties = type.GetProperties().Where(x => x.MemberType == MemberTypes.Property).Select(x => x.Name);
foreach (var item in properties)
{
if(item != null)
list.Add(item.ToString());
}
return list.ToArray();
}
var result = new List<string>();
var type = eContentField.GetType();
foreach (var prop in type.GetProperties())
{
result.Add(prop.Name);
}
return result.ToArray();
}
如果您对速度感兴趣,这比您的方法快两倍。 Ps:如果将 foreach 更改为 for 循环,速度会快一点,但不会快很多:)