Пользовательский атрибут | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Почитал про атрибуты и про то, как их можно с помощью рефлексии увидеть msdn.microsoft.com Попробовал - работает:
Но, если делаю:
то ни чего не выводится. Иначе говоря, не получается вывести на экран пользовательский атрибут метода, хотя пользовательский атрибут класса выводится без проблем. В чём может быть проблема? Куда копать? Исправлено 2 раз(а). Последнее : S-type, 27.03.17 19:29 |
Re: Пользовательский атрибут | |
---|---|
GotFocus Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Может [Display(Name = "Имя")] поможет ?
|
Re: Пользовательский атрибут | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Простите, не понял. Пожалуйста, опишите поподробней. |
Re: Пользовательский атрибут | |
---|---|
GotFocus Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Поставить [Display(Name = "Имя")] выше свойства
|
Re: Пользовательский атрибут | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Имеется ввиду свойство Name?
Ругается: Цитата: |
Re: Пользовательский атрибут | |
---|---|
SoccerStudio Сообщений: 5055 Откуда: Подмосковье Дата регистрации: 28.11.2006 |
object[] attrs = t.GetCustomAttributes() - это ты получаешь пользовательские атрибуты от t. т.е. от класса. С чего же ты считаешь, что атрибуты метода тоже должны быть там? Если правильно помню, нужно сначала получить MethodInfo метода, а у него уже смотреть CustomAttributes, тогда будет норм.
------------------ "Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов |
Re: Пользовательский атрибут | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну а с чего бы этому коды выводить атрибуты метода, если он выводит атрибуты самого типа? Или ты полагаешь что атрибуты методов привязываются заодно и к самому типу Нужно для метода - так и запрашивай атрибуты метода. Т.к. ты сам себе усложнил жизнь определив этот метод как private, то придётся использовать перегрузку с указанием флагов. Иначе можно было бы только по имени искать. object[] attrs = t.GetMethod("myFunc", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetCustomAttributes(false); А для надёжности (чтобы не вываливалось по NullReferenceException) написать всё это к примеру так:
------------------ WBR, Igor |
Re: Пользовательский атрибут | |
---|---|
GotFocus Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Поставить using System.ComponentModel.DataAnnotations; и ругаться не будет
Исправлено 1 раз(а). Последнее : GotFocus, 27.03.17 17:54 |
Re: Пользовательский атрибут | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Хороший вопрос! Видимо, потому что у меня неправильное представление о том, как всё устроено. |
Re: Пользовательский атрибут | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Полагаю, что ещё плохо знаю мат.часть... Хотя, с другой стороны, если бы не начал читать документацию, по атрибутам, так бы и не узнал - как оно, на самом деле.
В общем то, можно и public. Пример - просто абстрактный, сделан для изучения C#. |
Re: Пользовательский атрибут | |
---|---|
SoccerStudio Сообщений: 5055 Откуда: Подмосковье Дата регистрации: 28.11.2006 |
Собственно, Игорь тебе уже написал подробно, то что я сказал кратко. А вообще, помнится, в свое время мне попалась толстенная книга, что-то типа "C# 2005 и платформа .NET 3.0" (за точность названия не ручаюсь, но что-то типа этого, книга бледно-красная и очень толстая, фотография кучи авторов на обложке). Так вот там многие вопросы очень хорошо были разжеваны, в частности, все, что касается рефлексии. Думаю, и в более поздних изданиях хуже тоже быть не должно. ------------------ "Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов Исправлено 1 раз(а). Последнее : SoccerStudio, 27.03.17 19:23 |
Re: Пользовательский атрибут | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Спасибо. Всё действительно хорошо работает.
Правда, попутно обнаружил, что с C# 7 можно указать
но нельзя
|
© 2000-2024 Fox Club  |