2014-02-19 62 views
4

我有一個函數如何通過c#中的函數動態獲取屬性?

public string getValue(string val) 

,並在此功能,我需要從數據庫字段獲得的價值:

using (UsersContext db = new UsersContext()) 
{ 
    UserProfile user = db.UserProfiles.Where(c => c.UserId == this.userId).FirstOrDefault() 
    name = user.(val); ???????????? 
} 

我怎樣才能從函數參數的自定義值?我想我需要改變參數類型:

public string getValue(UserProfile val) 

但我如何獲得該屬性或傳遞屬性名稱?

謝謝!!! :)

+0

val是什麼參數?它是否指定了您想要訪問的屬性名稱? – Georg

+0

幫我理解。這個GetValue方法應該把你想從一個從數據庫中獲取的對象獲取的屬性的參數名稱?它是否總是與你從數據庫中獲得的相同類型的對象?如果是這樣,你爲什麼不只是返回對象? –

+0

這聽起來像是存儲過程的工作。 – asawyer

回答

2

這是通常更容易和更高性能的你的財產作爲函數傳遞不是作爲一個字符串,即你的簽名更改爲

在.NET
public string GetValue<T>(Func<UserProfile, T> property) 

(命名約定是方法是在帕斯卡案件中)。有了這個,你可以撥打name = property(user)

或者,您可以使用字符串來檢索PropertyInfo對象,並使用它來檢索屬性值。但是,由於需要反思,因此性能較差。

相關問題