Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
основная причина юзанья атрибутов с типами — PropertyGrid, бывший TValueListEditor.
Каждый объект имеет две ипостаси: с одной стороны он есть поле какого то типа, а с другой стороны он сам имеет свой тип, в котором могут быть разные поля.
Оказывается у каждого объекта свой собственный уникальный тип. Иначе говоря, две переменные типа int имеют два разных типа.
typeof(int).class X
{
class ATTR1 : Attribute { public ATTR1() { } }
class ATTR2 : Attribute { public ATTR2() { } }
class A
{
[ATTR1]
public int i1;
[ATTR2]
public int i2;
}
X()
{
object[] ai1 = a.i1.GetType().GetCustomAttributes(false);
object[] ai2 = a.i2.GetType().GetCustomAttributes(false);
}
}
[ATTR1] и [ATTR2], надо запрашивать атрибуты у FieldInfo.атрибуты только у типов.
Чтобы использовать атрибуты их сперва нужно найти у объекта.
Пример поправил.
А вот тем, кто не знает терминов шарпа, а писал на плюсах, например, в самый раз.
Зато писать уже можно.
Атрибут принадлежит типу
если типы различаются списком атрибутов — значит они различны
Я сознательно написал «переменная», что вообще говоря в терминах шарпа совсем никак.
Чисто для понимания, а вовсе не для документирования.
С# aтрибуты и типы