Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508

Применение аттрибутов

22.04.2013, 22:59. Показов 1213. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим я применяю атрибут к функции
C#
1
2
3
4
5
[Obsolete("В следуйщей версии содержание будет перенесено в функцию show")]
        public static void zagolovok()
        {
            Console.WriteLine("Название  Разработчики  Стоимость  Время");
        }
(код из лабы)
Можно ли каким-то образом в функции проверить применение атрибута??
И как проверить применение атрибута к классу?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2013, 22:59
Ответы с готовыми решениями:

Распечатка аттрибутов из XML файла
Объясните пожалуйста,как мне распечатать аттрибуты XML файла? То,что,горизонтальное или вертикальное расположение кораблей,оно печатает,а...

Как получить строковые значения аттрибутов из enum?
Здравствуйте, форумчане! как получить строковые значения аттрибутов из enum? Вот код: public class ResultCode { ...

Наследование аттрибутов
здравствуйте, подскажите пожалуйста, как сделать так, чтобы атрибуты, установленные у виртуального свойства класса родителя,...

7
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
23.04.2013, 08:45
Вот проверка наличия атрибута для класса:
C#
1
2
3
                object[] attributes = this.GetType().GetCustomAttributes(typeof(DataTableAttribute), false);
                if (attributes.Length > 0) 
                      return "у класса есть атрибут DataTable";
Вот так в моем коде идет проверка наличия атрибута для всех свойств. Переделай для конкретного метода. Думаю, справишься:
C#
1
2
3
4
5
6
7
                PropertyInfo[] properties = GetType().GetProperties();
 
                for (int i = 0; i < properties.Length; i++)
                {
                    object[] attributes = properties[i].GetCustomAttributes(typeof(DataFieldAttribute), false);
                    if (attributes.Length > 0) 
                               // у свойства properties[i] есть атрибут DataField
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
23.04.2013, 09:53  [ТС]
Цитата Сообщение от kontuPauk Посмотреть сообщение
object[] attributes = properties[i].GetCustomAttributes(typeof(DataFieldAtt ribute), false);
не удалось найти имя типа или пространства имён DataFieldAttribute
0
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
23.04.2013, 09:56
Но это же мой атрибут, который я сам определил в своем проекте. Вам привел только, как пример. Вы ищите тот, который тебе нужен...
ObsoleteAttribute, что ли?
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
23.04.2013, 10:10  [ТС]
У меня properties.Length = 0
Почему?
0
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
23.04.2013, 10:16
Давайте внимательно рассмотрим, что Вы проверяете.
Вы проверяете наличие атрибута ObsoleteAttribute у всех свойств (GetProperties) Вашего класса. Сообщение не выводится, так как, видимо, данный атрибут не применен ни к одному свойству Вашего класса.
Вы же, сколько я помню, хотели проверить наличие атрибута у конкретного МЕТОДА.
То есть Вам надо либо проверять у всех методов, заменив массив PropertyInfo[] на массив MethodInfo[], либо у конкретного метода, получив его
C#
1
MethodInfo myMethod = GetType().GetMethod("zagolovok");
И дальше проверяйте наличие атрибута:
C#
1
2
3
object[] attributes = myMethod.GetCustomAttributes(typeof(ObsoleteAttribute), false);
                if (attributes.Length > 0) 
                      return "у метода есть атрибут Obsolete";
Ну вот, уже почти все для Вас и написано.

Добавлено через 31 секунду
Цитата Сообщение от qwertun Посмотреть сообщение
У меня properties.Length = 0
Почему?
В Вашем классе видимо нет свойств.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
23.04.2013, 10:19  [ТС]
Цитата Сообщение от kontuPauk Посмотреть сообщение
return "у метода есть атрибут Obsolete";
ошибка CS0127: "function.zagolovok()" возвращает значение void, поэтому после ключевого слова return не должно присутствовать выражение объекта
// function - класс
0
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
23.04.2013, 10:38
Ну и не возвращайте. Замените return на то, что Вы хотели делать с атрибутом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2013, 10:38
Помогаю со студенческими работами здесь

Применение интерфейса
есть код public class Product { public int ProductID { get; set; } public string Name { get; set; } public string Description {...

Применение делегатов
Изучая самостоятельно С# по книге Шильда дошел до делегатов, и хоть и писал как по учебнику, видимо делегат не хочет мне сдаться. Хотел бы...

Применение делегатов
Доброго времени суток! Такой вопрос: в чем практическая польза делегатов и в каких ситуациях их лучше всего использовать?

Применение static
Ребят, помогите, учу с# и никак не могу понять смысл static,как это может вообще пригодиться, удобно ли? И еще не понятна такая вещь,...

Практическое применение атрибутов
Доброе время суток! В свободное время с удовольствием почитываю С# 4.0 Шилдта. Дошел до атрибутов. Судя по всему это что-то вроде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru