我有Person
类继承EntityBase
:
public class Person : EntityBase
{
virtual public string FirstName { get; set; }
virtual public string LastName { get; set; }
virtual public IList<Asset> Assets { get; set; }
}
和
public class EntityBase : IEntity
{
public virtual long Id { get; protected set; }
public virtual string Error { get; protected set; }
}
我需要获取self Person
class的属性列表:
var entity = preUpdateEvent.Entity;
foreach (var item in entity.GetType().GetProperties()) //only FirstName & LastName
{
if (item.PropertyType == typeof(String))
item.SetValue(entity, "XXXXX" ,null);
}
现在GetProperties()
包括:FirstName, LastName, Id, Error
但我只需要拥有Person属性,即:FirstName, LastName
如何获取仅在Person
上定义的属性?
答案 0 :(得分:8)
使用
var properties = typeof(Person).GetProperties(BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly);
DeclaredOnly
值为documented,如下所示:
指定只应考虑在提供的类型层次结构级别声明的成员。不考虑继承的成员。
答案 1 :(得分:0)
创建一个新类,例如PersonTemplate,它只有FirstName和LastName属性。然后:
public PersonTemplate (Person p)
{
FirstName = p.FirstName;
LastName = p.LastName;
}