C # не является ориентированным на АОП языком. У него есть некоторые функции AOP, и вы можете эмулировать некоторые другие, но AOP с C # является болезненным.
Я искал способы сделать именно то, что вы хотели сделать, и я не нашел простого способа сделать это.
Как я понимаю, это то, что вы хотите сделать:
[Log()]
public void Method1(String name, Int32 value);
, и для этого у вас есть две основные опции
Конечная опция использует IoC framework , Возможно, это не идеальное решение, так как большинство структур IoC работают, определяя точки входа, которые позволяют подключать методы, но, в зависимости от того, что вы хотите достичь, это может быть справедливое aproximation.
Его все метаданные для модуля Foobar
.
Первый - это строка документации
модуля, которая уже описана в ] Ответ Питера .
Как мне организовать свои модули (исходные файлы)? (Архив)
Первая строка каждого файла должна быть
#! / Usr / bin / env python
. Это позволяет запускать файл как сценарий, неявно вызывающий интерпретатор, например, в контексте CGI.Далее должна быть строка документации с описанием. Если описание длинное, первая строка должна быть короткой резюме, которое имеет смысл само по себе, отделенное от остального новой строкой.
Весь код, включая операторы импорта, должен следовать за строкой документации. В противном случае строка документации не будет распознана интерпретатором, и у вас не будет доступа к нему в интерактивных сеансах (например, через
obj .__ doc __
) или при создании документации с помощью автоматических инструментов.Сначала импортируйте встроенные модули, а затем сторонние модули, а затем любыми изменениями пути и ваших собственных модулей. В частности, дополнения к пути и именам ваших модулей могут быстро измениться: хранение их в одном месте облегчает их поиск.
Затем следует указать информацию об авторстве. Эта информация должна иметь следующий формат:
__ author__ = "Роб Найт, Гэвин Хаттли и Питер Максвелл" с последующими изменениями пути и ваших собственных модулей. В частности, дополнения к пути и именам ваших модулей могут быстро измениться: хранение их в одном месте облегчает их поиск.
Затем следует указать информацию об авторстве. Эта информация должна иметь следующий формат:
__ author__ = "Роб Найт, Гэвин Хаттли и Питер Максвелл" с последующими любыми изменениями пути и ваших собственных модулей. В частности, дополнения к пути и именам ваших модулей могут быстро измениться: хранение их в одном месте облегчает их поиск.
Затем следует указать информацию об авторстве. Эта информация должна иметь следующий формат:
__ author__ = "Роб Найт, Гэвин Хаттли и Питер Максвелл" __copyright__ = "Авторские права 2007, The Cogent Project" __credits__ = [«Роб Найт», «Питер Максвелл», «Гэвин Хаттли», "Мэтью Уэйкфилд"] __license__ = "GPL" __version__ = "1.0.1" __maintainer__ = "Роб Найт" __email__ = " rob@spot.colorado.edu " __status__ = "Производство"
Статус обычно должен быть одним из «Прототип», «Разработка» или «Производство».
__ сопровождающий __
должен быть человеком, который будет исправлять ошибки и вносить улучшения в случае импорта.__ кредитов __
отличается от__ автора __
тем, что__ кредитов __
включает людей, которые сообщили об исправлениях ошибок, внесли предложения и т. Д., Но на самом деле не написали код.
Здесь у вас есть дополнительная информация, перечисление __ автор __
, __ авторы __
, __ свяжитесь с __
, __ авторское право __
, __20629]
__20629 __] [ ] __ не рекомендуется __
, __ date __
и __ версия __
как распознанные метаданные.
Также см. PEP 263 , если вы используете набор символов, отличный от ascii
Аннотация
Этот PEP предлагает ввести синтаксис для объявления кодировки исходный файл Python. Информация о кодировке затем используется Парсер Python для интерпретации файла с использованием заданной кодировки. Наиболее в частности, это улучшает интерпретацию литералов Unicode в исходный код и позволяет писать литералы Unicode используя, например, UTF-8 непосредственно в редакторе, поддерживающем Unicode.
Проблема
В Python 2.1 литералы Unicode могут быть записаны только с использованием Кодировка на основе Latin-1 "unicode-escape". Это делает среда программирования довольно недружелюбна к пользователям Python, которые живут и работать в регионах, отличных от Latin-1, например, во многих азиатских страны. Программисты могут писать свои 8-битные строки, используя любимая кодировка, но привязаны к кодировке "unicode-escape" для литералов Unicode.
Предлагаемое решение
Я предлагаю сделать кодировку исходного кода Python как видимой, так и можно изменять для каждого исходного файла с помощью специального комментария в верхней части файла, чтобы объявить кодировку.
Чтобы Python знал об этом объявлении кодировки, ряд необходимы изменения концепции в отношении обращения с Данные исходного кода Python.
Определение кодировки
Python по умолчанию будет использовать ASCII в качестве стандартной кодировки, если нет другой даны подсказки по кодированию.
Чтобы определить кодировку исходного кода, магический комментарий должен помещать в исходные файлы как первый или второй строка в файле, например:
# coding = <имя кодировки>
или (с использованием форматов, признанных популярными редакторами)
#! / Usr / bin / python # - * - кодировка: <название кодировки> - * -
или
#! / Usr / bin / python # vim: set fileencoding = <имя кодировки>:
...