Передача данных экземпляра объекта в атрибут
Я хотел бы передать определенные данные из экземпляра объекта его атрибуту, и у меня возникли проблемы с пониманием того, как его реализовать. Вот пример:
[AuthenticateAttribute]
public class MyController: Controller
{
UserInfo info;
}
Идея в том, что AuthenticateAttribute
экземпляр будет заполнять экземпляр UserInfo.
Я хочу передать ссылку на info
к примеру AuthenticateAttribute
и тем самым устранить сильную связь между атрибутом и частным MyController
учебный класс.
Это возможно?
2 ответа
Сам атрибут не должен иметь UserInfo
поле ИМО. Имейте в виду, что будет один экземпляр атрибута для типа, к которому он применяется, а не один на экземпляр этого типа.
Если бы вы могли привести более полный пример (показывающий код, к которому он применяется), мы могли бы помочь больше...
Коллекция ViewData контроллера доступна из атрибута, и вы можете добавить свой объект UserInfo к нему, а затем получить к нему доступ в действиях контроллера. Вы также можете использовать типизированную модель, содержащую UserInfo. Этот сценарий описан здесь. Получить разрешение от Авторизовать Атрибут?
Изменение полей типа в атрибуте, который применяется к нему, не распространено, и вы должны быть очень осторожны.