读书人

怎么获取属性名称

发布时间: 2013-04-09 16:45:09 作者: rapoo

如何获取属性名称?


[解决办法]
引用:
引用:

class Program
{
public string age { get; set; }
static void Main()
{
Type myType=this.GetType();
myType.Name;
}
}

这是类型名,我想要的是属性名字age

            public string age { get; set; }
public string id { get; set; }
static void Main(string[] args)
{
Program p = new Program();


Type type = p.GetType();
foreach (PropertyInfo pinfo in type.GetProperties())
Console.WriteLine(pinfo.Name);
Console.ReadLine();
}


[解决办法]
用反射获取属性名
[解决办法]
using System.Reflection;

如 huangwenquan123 所答。
[解决办法]
static void Test(Type type, object value)
{
//通过type得到"Program.age".
//或许我传的这个参数不对,但是用什么方法在这里可以得到这个字符串"Program.age",前提是Test方法的参数只有temp.age
}


value是干嘛用的,value跟得到Program.age有什么关系吗?

LZ再描述下你的详细需求吧,还是没说清楚


[解决办法]
貌似需要使用反射。
[解决办法]
其实你的问题是,如何将 temp.age 这个 实例变量.属性 这种结构 转化为 字符串 "temp.age"
[解决办法]
temp.age传递给Test函数后

Test函数得到的信息仅仅是一个string类型的对象,Test函数甚至都不知道这个string对象是从哪里传递过来的

所以你的需求基本无法实现
[解决办法]
看看这个贴子也许有点帮助http://topic.csdn.net/u/20110709/17/49adf99d-4e7b-4489-b144-d633fdfb85f4.html?69710

[解决办法]
class Program
{
static void Main(string[] args)
{
Person p = new Person();
Type t = typeof(Person);

string name = t.Name + "." + ReflectionUtility.GetPropertyName(() => p.Age);
}

public static class ReflectionUtility
{
public static string GetPropertyName<T>(Expression<Func<T>> expression)
{
MemberExpression body = (MemberExpression)expression.Body;
return body.Member.Name;
}
}
}

public class Person


{
public string Name { get; set; }

public int Age { get; set; }
}

读书人网 >C#

热点推荐