2014-02-19 31 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对象,并使用它来检索属性值。但是,由于需要反思,因此性能较差。

相关问题