Посмотрите, применяется ли атрибут к свойству типа String в атрибуте class - PullRequest
0 голосов
/ 09 февраля 2012

скажем, у меня есть атрибут:

public class Column_Attribute : Attribute
{
    public string DbType { get; set; }
    public bool IsPrimaryKey { get; set; }
}

тогда я могу применить этот атрибут к свойству как:

 [Column_Attribute(DbType = "Integer", IsPrimaryKey = true)]
 public int Id { get; set; }   

Теперь, как я могу получить информацию об идентификаторе свойства из класса атрибута. Другими словами, я хочу сделать что-то вроде:

public class Column_Attribute : Attribute
{
    // constructor
    public Column_Attribute(){
      // if the property has the name Id do something...
      // OR
      // if this is an attribute of a property do something
      // if this is an attribute of a field do something else

      // If this attribute is targeting a property that is a string do something
    }

    public string DbType { get; set; }
    public bool IsPrimaryKey { get; set; }
}

Мне действительно нужно знать, применяется ли атрибут к свойству, являющемуся строкой.

Я знаю, как сделать это с помощью отражения, но я хочу сделать это внутри класса атрибутов. Это возможно. Надеюсь, я правильно объясняю себя

1 Ответ

1 голос
/ 09 февраля 2012

Вы не можете сделать это без отражения, потому что код в конструкторе не будет выполнен, пока вы не вызовете GetCustomAttributes(), который является частью отражения.

см. http://msdn.microsoft.com/en-us/library/z919e8tw(v=vs.80).aspx

Вызов GetCustomAttributes для SampleClass заставляет объект Author быть построенным и инициализированным как указано выше

Если вы хотите, чтобы ваш класс атрибута содержал код обработки, вы можете создать метод, получающий имя свойства. Имя свойства будет доступно во время вызова GetCustomAttributes ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...