Browse Source

修正派生类属性重写未生效的问题。

master
王厅 3 days ago
parent
commit
294176d262
  1. 38
      Apewer/Source/TableStructure.cs

38
Apewer/Source/TableStructure.cs

@ -225,26 +225,34 @@ namespace Apewer.Source
{ {
if (type == null) throw new ArgumentNullException(nameof(type)); if (type == null) throw new ArgumentNullException(nameof(type));
// 需要获取属性的类型。 // 获取所有属性的名称,基类在前。
var types = new List<Type>(); var chian = new List<Type>();
{ var current = type;
var target = type;
while (true) while (true)
{ {
if (target.Equals(RuntimeUtility.ObjectType)) break; if (current.Equals(RuntimeUtility.ObjectType)) break;
types.Add(target); chian.Add(current);
target = target.BaseType; current = current.BaseType;
}
} }
var names = new List<string>();
// 所有属性。 for (var i = chian.Count - 1; i >= 0; i--)
var list = new List<PropertyInfo>(); {
for (var i = types.Count - 1; i >= 0; i--) var declared = chian[i].GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach (var property in declared)
{
if (names.Contains(property.Name))
{ {
var properties = types[i].GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); continue;
list.Add(properties);
} }
return list.ToArray(); names.Add(property.Name);
}
}
// 获取所有属性。
var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
var result = names.Map(n => properties.Find(p => p.Name == n));
result = result.FindAll(p => p != null);
return result;
} }
#endregion #endregion

Loading…
Cancel
Save