簡體   English   中英

如何獲取繼承類的屬性

[英]How get properties for a inherits class

我有一個繼承EntityBasePerson類:

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類的屬性列表:

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定義的屬性?

使用

var properties = typeof(Person).GetProperties(BindingFlags.Public |
                                              BindingFlags.Instance |
                                              BindingFlags.DeclaredOnly);

DeclaredOnly記錄如下:

指定僅應考慮在提供的類型的層次結構級別聲明的成員。 不考慮繼承的成員。

創建一個新類,例如PersonTemplate,它只有FirstName和LastName屬性。 然后:

public PersonTemplate (Person p)
{
    FirstName = p.FirstName;
    LastName = p.LastName;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM