Я хочу создавать настраиваемые атрибуты для классов, чтобы ограничивать тех, кто их вызывает.
Например:
[Permission("Admin")] public class MyData { ....
Как это сделать? Поэтому я действительно хочу сделать что-то вроде Permission-класса.
Вы либо используете уже существующие, либо пишете свои и подключаете их к архитектуре Code Access Security. Это было очень давно, поэтому простой поиск в Интернете дает вам следующее:
Код доступа к безопасности
Создание собственных прав доступа к коду
Вырезать из ссылки выше:
Реализация пользовательского разрешения на доступ к коду включает в себя следующее шаги, некоторые из которых являются необязательными. Каждый шаг описан в отдельная тема. Дизайн Permission класса. Реализация интерфейсов IPermission и IUnrestrictedPermission. Реализация интерфейса ISerializable, если это необходимо для производительности или для поддержки специальных типов данных. Обработка XML-кодирования и декодирования. Добавление поддержки декларативной безопасности путем реализации класса Attribute. Требуйте специального разрешения для вашего разрешения, где это необходимо.
Реализация пользовательского разрешения на доступ к коду включает в себя следующее шаги, некоторые из которых являются необязательными. Каждый шаг описан в отдельная тема.
Permission
IPermission
IUnrestrictedPermission
ISerializable
Attribute
На самом деле вам интересны шаги 1, 2, 5 и 6.
Разрешение будет наследоваться от атрибута.Затем вам нужно будет реализовать код для проверки класса на наличие этих атрибутов перед вызовом класса / метода..NET Framework уже имеет эту встроенную функциональность. SecurityPermissionAttribute и FileIOPermissionAttribute - это две реализации, которые вы, возможно, захотите рассмотреть перед развертыванием своей собственной.
Пользовательские атрибуты MSDN
Вот ссылка на то, что необходимо для создания пользовательских атрибутов.