У меня есть код для определения пользовательских атрибутов, а затем для чтения в коде он не работает. Чтобы попытаться исправить проблему, я вернулся и попытался использовать DisplayName, однако у меня все еще остается та же проблема, что GetCustomAttribute или GetCustomAttributes не может их перечислить. У меня есть пример ниже.
У меня установлен атрибут DisplayName в классе, например ...
class TestClass
{
public TestClass() { }
[DisplayName("this is a test")]
public long testmethod{ get; set; }
}
Затем у меня есть некоторый код для перечисления атрибута DisplayName для каждого метода в вышеприведенном классе.
TestClass testClass = new TestClass();
Type type = testClass.GetType();
foreach (MethodInfo mInfo in type.GetMethods())
{
DisplayNameAttribute attr = (DisplayNameAttribute)Attribute.GetCustomAttribute(mInfo, typeof(DisplayNameAttribute));
if (attr !=null)
{
MessageBox.Show(attr.DisplayName);
}
}
Проблема в том, что в списке нет атрибутов DisplayName, код выше компилируется, запускается и не отображает никаких сообщений.
Я даже пытался использовать для каждого цикла с GetCustomAttributes, перечисляя все атрибуты для каждого метода снова. Атрибут DisplayName никогда не перечисляется, однако я получаю атрибуты компиляции и другие подобные системные атрибуты.
Кто-нибудь знает, что я делаю не так?
ОБНОВЛЕНИЕ - Большое спасибо NerdFury за указание, что я использовал методы, а не свойства. После того, как все изменилось, все заработало.