Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Создайте атрибут для разрыва сборки
Хорошо, это следует из моего предыдущего вопроса .
То, что я действительно хотел бы сделать, - это создать какой-то атрибут, который позволяет мне украсить метод, который сломает сборку . Очень похоже на устаревший атрибут("reason", true) , но без ложной идентификации устаревшего кода.
Чтобы уточнить: я не хочу, чтобы он нарушал сборку при любом нажатии F6 (Build), я только хочу, чтобы он нарушал сборку, если метод, украшенный атрибутом, вызывается где-то еще в коде. Как я уже сказал, Похоже на устаревшее, но не то же самое.
Я знаю, что я не одинок в этом, так как другие пользователи хотят использовать его по другим причинам . Я никогда не создавал пользовательские атрибуты раньше, так что все это ново для меня!
Я думаю, что это был бы отличный запрос функции для Microsoft: создайте абстрактный атрибут базового класса CompilerExecutedAttribute , который компилятор обрабатывает тем или иным образом или который может влиять на процесс компиляции. Тогда мы могли бы наследовать от этого атрибута и реализовывать различные операции, например, выдавать ошибку или предупреждение.
Если это относится к сериализации XML и NHibernate, где вы хотите, чтобы конструктор без параметров был доступен (как в приведенном примере ), то используйте закрытый или защищенный конструктор без параметров для сериализации или защищенный конструктор для NHibernate. С защищенной версией вы открываете себя для унаследованных классов, способных вызывать этот код.
Если вы не хотите, чтобы код вызывал метод, не делайте его доступным.
EDIT: возможно, чтобы ответить на более глубокий вопрос, AFAIK компилятор знает только о трех атрибутах: устаревшем, условном и AttributeUsage . Чтобы добавить специальную обработку для других атрибутов, потребуется изменить компилятор.
Я бы посоветовал вам использовать директиву #error.
Еще одним довольно неизвестным атрибутом, который может выполнять эту работу, является условный атрибут (в зависимости от того, что вы пытаетесь получить)
[Conditional("CONDITION")]
public static void MiMethod(int a, string msg)
который удалит вызов метода из самого кода IL, если определен "MY_CONDITION".
Создайте правило FxCop и добавьте FxCop в свою сборку интеграции, чтобы проверить это.
Вы получите предупреждения, а не неудачную сборку. Атрибуты 'run' во время отражения, а не во время сборки.
В качестве альтернативы (и это довольно неприятно) поместите директиву компилятора вокруг метода, который вы не хотите вызывать. Тогда ваш код сломается, если вы вызовете его, но вы можете настроить сборку, которая передает правильную директиву компилятора и не делает этого.
Ответ 4 года спустя :)
У меня был тот же вопрос, если бы была альтернатива устаревшим.
Из того, что я помню (видео channel9) некоторое время назад Microsoft заявила, что она работает над предоставлением разработчикам доступа к чему-то вроде компилятора api в какой-то момент, поэтому в будущем возможно, что вы могли бы написать компилятор "plugin", который позволил бы украсить методы вашим собственным пользовательским атрибутом и сказать компилятору отменить, если он выглядит так, что украшенный код может быть вызван где-то еще в коде и т. д.
Что на самом деле было бы довольно круто, когда вы думаете об этом. Это также напоминает мне, что я должен также попытаться прочитать о прогрессе этого компилятора api, над которым работает MS...