从外部访问ParseFieldName属性

本文关键字:属性 ParseFieldName 访问 从外部 | 更新日期: 2023-09-27 18:21:58

我有一个解析子类,比如:

[ParseClassName("_User")]
public class RFUser : ParseUser
{
    [ParseFieldName("firstname")]
    public string Firstname
    {
        get { return GetProperty<string>(); }
        set { SetProperty(value); }
    }
}

是否可以从程序的其他部分读取ParseFieldName("firstname")?

类似于:类型为(RFUser)。ParseFieldNames.Firstname?

从外部访问ParseFieldName属性

你很接近。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

如果将GetCustomAttributes()替换为Attributes,也可以访问常规属性。