日期:2014-05-19  浏览次数:20395 次

关于反射如何获得类的属性参数(表达可能不太正确,请大家看代码)??【在线等】
[Serializable]
[TableName( "tUser ")]
public   class   User
{

}
……………………………………
通过反射如何得到User类的TableName属性中的 "tUser "的值~??


------解决方案--------------------
User user = new User();
object[] objs = user.GetType().GetCustomAttributes(typeof(TableNameAttribute), false);
foreach (object obj in objs)
{
TableNameAttribute tn = (TableNameAttribute)obj;
//tn.属性
}
------解决方案--------------------

static void GetAttributeValue(object obj)
{
Type type = obj.GetType();

PropertyInfo[] pis = type.GetProperties(); // 获取此对象所有属性.
foreach (PropertyInfo pi in pis)
{
object[] objs = pi.GetCustomAttributes(true); // 这里获取每个属性的自定义属性(Attribute).
foreach (object o in objs)
{
Console.WriteLine(o.GetType().FullName);
Console.WriteLine(((ValueAttribute)o).Value);
}
}
}

------解决方案--------------------
例如:

[....]
class TableNameAttribute:Attribute
{
public Name;
public TableName(string Name){ this.Name=Name;}
}

程序中:

TableNameAttribute tn=(TableNameAttribute)Attribute.GetCustomAttribute(
typeof(User),typeof(TableNameAttribute));
if(tn!=null)
{
string result=tn.Name;
......