2015-11-15 5 views
0

У меня есть подкласс синтаксического анализа, как:Доступ к ParseFieldName недвижимости снаружи

[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

Вы близко. Атрибутами ParseClassName и ParseFieldName являются настраиваемые атрибуты. Если это так, вы можете получить к ним доступ, если вы получите имя свойства, заданного конструктором атрибута.

Потому что у меня нет (или не знаю, у меня есть) в DLL, которая определяет класс атрибута ParseFieldName, я создал его следующим образом:

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().

Смежные вопросы