如何获取继承类的属性

时间:2011-12-24 10:47:11

标签: c# c#-4.0

我有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上定义的属性?

2 个答案:

答案 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;
}