我有一个解析子类,如:
[ParseClassName("_User")]
public class RFUser : ParseUser
{
[ParseFieldName("firstname")]
public string Firstname
{
get { return GetProperty<string>(); }
set { SetProperty(value); }
}
}
是否可以从程序的其他部分读取ParseFieldName(“firstname”)?
像: typeof(RFUser).ParseFieldNames.Firstname?
答案 0 :(得分:0)
你很亲密。 ParseClassName和ParseFieldName属性似乎是自定义属性。如果是这样,如果获得属性的构造函数设置的属性的名称,则可以访问它们。
因为我没有(或者不知道我有)定义ParseFieldName
属性类的DLL,所以我按如下方式创建了它:
public class ParseFieldName: Attribute
{
public string Name { get; set; }
public ParseFieldName(string name)
{
this.Name = name;
}
}
作为参考,我的RFUser
类定义为:
[ParseClassName("_User")]
public class RFUser
{
[ParseFieldName("fieldfirstname")]
public string Firstname { get; set; }
}
在程序的其他地方,我有一个带有using System.Reflection
语句的类,并且有一个包含以下代码片段的方法:
RFUser user = new RFUser();
var attribute = (ParseFieldName)user.GetType().GetProperty("Firstname").GetCustomAttribute(typeof(ParseFieldName));
Console.WriteLine(attribute.Name);
控制台中显示的值为fieldfirstname
。
如果您将Attributes
替换为GetCustomAttributes()
。