首页 新闻 会员 周边 捐助

如何将属性名转化为字符串?

0
悬赏园豆:5 [待解决问题]

public class User
{
  public string name { get; set; }
  public string gender { get; set; }
  public string age { get; set; }
}

 

User u=new User();

//如何通过u.name这个属性得到"name"

红尘中迷茫的主页 红尘中迷茫 | 初学一级 | 园豆:60
提问于:2013-01-24 21:10
< >
分享
所有回答(10)
0

你在get里面return "name"不就行了!~

zxding1986 | 园豆:192 (初学一级) | 2013-01-24 21:23

不是这个意思,我需要得到属性的名字,不是它的值。

typeof(User).GetProperties();到是可以得到属性列表,通过循环得到属性名,想知道有办法简单的得到一个属性的名吗

支持(0) 反对(0) 红尘中迷茫 | 园豆:60 (初学一级) | 2013-01-24 22:07
0

反射

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-24 22:37
0

使用反射:大概是这样.

User user=new User();

Type type=user.GetType();

然后你type. 看看有什么方法吧!

dotnetgeek | 园豆:482 (菜鸟二级) | 2013-01-25 10:20
0

除了反射再遍历typeof(User).GetProperties()没有其他办法

Rich.T | 园豆:3440 (老鸟四级) | 2013-01-25 10:25

typeof() 里面可以加user么 ?? 只能 user.GetProperties()

支持(0) 反对(0) 小坡子~ | 园豆:252 (菜鸟二级) | 2013-06-14 11:24
 user.GetType().GetProperties();
支持(0) 反对(0) 小坡子~ | 园豆:252 (菜鸟二级) | 2013-06-14 11:25
0

序列化就行了

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-01-25 10:44
0

你是指像linq那样的可以在运行的时候获得编码时使用的各种名字吧。很遗憾的告诉你,那种功能其实是个语法糖,在运行时做不到。

凹出来 | 园豆:33 (初学一级) | 2013-01-25 14:44
0

反射,顶.!!

只会造轮子 | 园豆:2274 (老鸟四级) | 2013-01-25 18:21
0
class Test
    {
        static void Main()
        {
            User entity = new User();
            PropertyInfo[] pi = entity.GetType().GetProperties();
            foreach (PropertyInfo info in pi)
            {
                if (info.Name.ToString() == "name")
                {
                    Console.WriteLine(info.Name.ToString());
                }
            }
        }
    }

    public class User
    {
        public string name { get; set; }
        public string gender { get; set; }
        public string age { get; set; }
    }
beyondchina | 园豆:680 (小虾三级) | 2013-03-26 21:34
0

楼上是正解

小坡子~ | 园豆:252 (菜鸟二级) | 2013-06-14 09:36
0
public static class ExtensionMethods
{
    public static string GetPropertyName<T>(this object obj, Expression<Func<T>> propertyExpression)
    {
        if (propertyExpression == null)
        {
            throw new ArgumentNullException("propertyExpression");
        }
        MemberExpression body = propertyExpression.Body as MemberExpression;
        if (body == null)
        {
            throw new ArgumentException("Invalid argument", "propertyExpression");
        }
        PropertyInfo property = body.Member as PropertyInfo;
        if (property == null)
        {
            throw new ArgumentException("Argument is not a property", "propertyExpression");
        }
        return property.Name;
    }
}

//方法调用
Product p = new Product();
Console.WriteLine(p.GetPropertyName(() => p.ID));
Desmond | 园豆:281 (菜鸟二级) | 2014-09-19 13:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册