2013-10-27 59 views
0
  Type type = entity.GetType();     
      PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); 

      foreach (var p in properties) 
      { 

       if(p.Name == "State") 
       {       
        context.Entry(INSTANCE_TO_WHICH_THE_PROPERTY_p_BELONGS_TO).State = FunctionThatWillSetTheState(p.State) 
       } 
      } 

與通用簽署該方法接收一類「實體」如何獲取它屬於的屬性的對象?

public static void EntityAction<TEntity>(TEntity entity) 
     where TEntity : class, IObjectWithState 

然後通過在該實例
何做我得到一類屬性的對象/實例的屬性循環「的一個實例p「屬於?

,因爲我要告訴這個功能

context.Entry(INSTANCE_TO_WHICH_THE_PROPERTY_p_BELONGS_TO).State = FunctionThatWillSetTheState(p.State) 

感謝。

+0

你有實例:'entity' - 或者有什麼我不明白的東西? –

+0

請用您正在使用的編程語言標記您的問題。 –

+0

實體是正在傳遞的類的泛型實例,我需要知道在這裏通過什麼類型的實例(實體)是接受「實體」的methot: 公共靜態無效EntityAction (TEntity實體) 其中TEntity:class,IObjectWithState –

回答

-1

您可以獲取類的類型的PropertyInfo被宣佈:

var t = property.DeclaringType; 

如果你已經有實例,那麼你就可以得到屬性的值對於特定實例>

var v = property.Getvalue(myInstance, null); 

但是,如果你還沒有實例(例如你的例子中的「entity」),那麼就不可能從Type或PropertyInfo獲得一個實例。 Reflection僅涉及類型&的定義,而不是任何特定的實例。

+0

例如:類實體{public string Name {get;設置;}公共地址地址{獲取;設置;}列表 People {get;設置;}}類「實體」有一個父「地址」和子「人」。我試圖完成的方法的想法是獲取「實體」並通過其屬性進行循環,包括「實體」具有的任何子女或父母。由於循環將經歷所有屬性,家長和孩子將會爲「實體」及其子女和父母設置不同類型的狀態。 –