Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
1

AttributeUsage и target: Attribute

27.10.2018, 12:31. Показов 3809. Ответов 9

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Подскажите, пожалуйста, в чём разница между применение атрибута, AttributeUsage:
C#
1
2
[AttributeUsage(AttributeTargets.Class)]
public class RemarkAttribute : Attribute{...}
и применением целевого объекта атрибута:
C#
1
2
[type:Remark("В этом классе используется атрибут.")]
class UseAttrib{...}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2018, 12:31
Ответы с готовыми решениями:

AttributeUsage
Здравствуйте! Подскажите, пожалуйста, почему компилятор не отбрасывает у класса атрибута...

Ошибка - Attribute 'onchange' is not a valid attribute of element
Взято из книги: <asp:DropDownList ID="lstRegions" Runat="server"...

Object has no attribute
Добрый день,пересаживаюсь с с#, вообще не вдупляю на что ругается. Объясните import sys import...

Attribute Grammar
Читал "Dragon book", но не понял, с какой целью нужны атрибуты? И что такое attribute evaluation? Я...

9
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
27.10.2018, 14:41 2
Лучший ответ Сообщение было отмечено HitGirl как решение

Решение

HitGirl,
AttributeUsage - указывает к каким элементам атрибут в принципе может быть применен. Например, вы не сможете применить атрибут к свойству, если в AttributeUsage не указано свойство.

Модификатор target: - указывает к какому элементу мы применяем данный атрибут.
Например:
C#
1
2
[field: MyAttribute]
public int F{get;set;}
Здесь field: указывает на то, что атрибут будет применяться не к свойству а к полю, которое спрятано внутри свойства. При этом, разумеется, необходимо, что бы атрибут имел разрешение быть примененным к полям - через AttributeUsage.
2
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
27.10.2018, 16:03  [ТС] 3
Цитата Сообщение от Storm23 Посмотреть сообщение
target: - указывает к какому элементу мы применяем данный атрибут
А если его не указать, к какому элементу будет применён атрибут?
Значение атрибутов статических полей никак нельзя получить?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
27.10.2018, 16:40 4
Лучший ответ Сообщение было отмечено HitGirl как решение

Решение

Цитата Сообщение от HitGirl Посмотреть сообщение
А если его не указать, к какому элементу будет применён атрибут?
К следующему за атрибутом объялению

Цитата Сообщение от HitGirl Посмотреть сообщение
Значение атрибутов статических полей никак нельзя получить?
Можно. Точно так же как и для не-статических. Механизм одинаковый.
1
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
27.10.2018, 17:35  [ТС] 5
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Можно. Точно так же как и для не-статических. Механизм одинаковый.
Почему это возможно, ведь статические поля не наследуются?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
27.10.2018, 17:39 6
HitGirl, как связано получение значение атрибута с наследованием?
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
27.10.2018, 17:43  [ТС] 7
OwenGlendower, вроде рефлексия работает через наследование. Тут в табличке написано, что статические поля не возвращаются рефлексией.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
27.10.2018, 17:51 8
HitGirl, рефлексия НЕ работает через наследование. Оно умеет принимать его во внимание, что как бы совсем не то же самое. В таблице описываются правила по которым GetXYZ методы возвращают/не-вовзвращают члены базового класса.
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
27.10.2018, 18:04  [ТС] 9
Цитата Сообщение от OwenGlendower Посмотреть сообщение
возвращают/не-вовзвращают члены базового класса.
Но ведь там стоит: NO, на пересечении field и static.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
27.10.2018, 18:08 10
HitGirl, это говорит только о том что метод GetFields или GetMembers не вернет static поля базового класса. Это не значит что их вообще нельзя получить. И тем более из этого не следует что нельзя получить атрибуты static полей.
1
27.10.2018, 18:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2018, 18:08
Помогаю со студенческими работами здесь

read-only attribute
Проблема в том, что для всех папок (но не для фалов) в системе установлен атрибут "только для...

Attribute и Reflection
Здравствуйте. Сейчас вроде освоил темы атрибутов и рефлексии. Только вот, не хватает примеров этих...

Class instance has no attribute
Приветствую. В питоне не особо шарю, поэтому нужна ваша помощь. Есть чужой, якобы когда-то точно...

'NoneType' object has no attribute
Пытаюсь добавить товар в корзину. Хочу начать с простого. Есть 3 модели: Product, CartItem, Cart. ...

'str' object has no attribute
Здравствуйте. Возникла проблема с вызовом функции. Ошибка такая: 'str' object has no attribute...

Ошибка object has no attribute 'get'
#бегущая строка from tkinter import * def exit(): #функция выхода sys.exit() def...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru