Какие библиотеки аспектно-ориентированного программирования (AOP) для .NET все еще активно развиваются?

Цитата из Python 3 Reference :

Нелокальный оператор заставляет перечисленные идентификаторы ссылаться на ранее связанные переменные в ближайшей охватывающей области, исключая глобальные переменные.

Как сказано в ссылке, в случае нескольких вложенных функций изменяется только переменная в ближайшей закрывающей функции:

def outer():
    def inner():
        def innermost():
            nonlocal x
            x = 3

        x = 2
        innermost()
        if x == 3: print('Inner x has been modified')

    x = 1
    inner()
    if x == 3: print('Outer x has been modified')

x = 0
outer()
if x == 3: print('Global x has been modified')

# Inner x has been modified

«Ближайшая» переменная может быть нескольких уровней away:

def outer():
    def inner():
        def innermost():
            nonlocal x
            x = 3

        innermost()

    x = 1
    inner()
    if x == 3: print('Outer x has been modified')

x = 0
outer()
if x == 3: print('Global x has been modified')

# Outer x has been modified

Но это не может быть глобальной переменной:

def outer():
    def inner():
        def innermost():
            nonlocal x
            x = 3

        innermost()

    inner()

x = 0
outer()
if x == 3: print('Global x has been modified')

# SyntaxError: no binding for nonlocal 'x' found

21
задан 4 revs 23 May 2017 в 11:47
поделиться

2 ответа

Вам не нужен Windsor для использования DynamicProxy. Windsor использует DynamicProxy для своих целей, так же как NHibernate, RhinoMocks, Moq или другие библиотеки/приложения/фреймворки. Если вам нужен только runtime AOP, без IoC контейнера, используйте только Caste DynamicProxy.

Он активно развивается, последний предварительный релиз был выпущен 2 недели назад, финальный релиз (v2.5) ожидается в этом месяце.

Примечание: В предыдущих версиях (до v2.2) DynamicProxy находился в собственной сборке Castle.DynamicProxy.dll. Позже он был перенесен в Castle.Core.dll, и теперь для его использования не требуется никакой другой сборки. Источник

5
ответ дан 29 November 2019 в 22:14
поделиться

Был также Aurum (доступен на www.machinaaurum.com.br), который был построен на Unity. Исходники доступны на Codeplex.

1
ответ дан 29 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: