Built-in AOP em C # - é no caminho?
Pergunta
Em grandes aplicativos que eu encontro-me realmente desejando que eu tinha construído-in instalações AOP. Tal como está em C # o melhor que você pode fazer é fábricas e RealProxys, PostSharp, ICorDebug, ICorProfiler ou frameworks de injeção. Não há limpo built-in maneira de fazer AOP.
Há alguma indicação em qualquer lugar (blog post / discussão interna) que indica que AOP está a caminho?
Solução
tampas resposta de Romain (quase :) perfeitamente as soluções atuais. Quanto ao apoio futuro, Anders Hejlsberg tem afirmado anteriormente que they'were em espera e ver o modo sobre AOP.
Podemos apenas esperar que, com a reescrita gerenciado de csc, e uma «Compiler as a Service», pode-se ligar para o compilador, e injetar aspectos lá.
Outras dicas
Eu não ouvi falar de um "limpa built-in maneira de fazer AOP". Mas como você disse, há "formas limpas de fazer AOP" já abundância, usando amadurecer e estruturas poderosas como PostSharp ou Castelo DynamicProxy .
Usando o BCL, de uma forma óbvia de fazer AOP, com limitações muito fortes pensei, é usar proxys transparentes e reais, de Remoting pilha.
Outra maneira é contar com System.Reflection.Emit para gerar dinamicamente proxies, como, hum, DynamicProxy do Castelo.
Finalmente, há também um outro oficial da Microsoft solução sinalizado, que veio com a Empresa biblioteca. Eu estou falando sobre o Policy Injection Application Block . Unidade também oferece algumas capacidades de intercepção que PIAB alavancagem.
Spring.NET fornece AOP também. Ele tem um monte de configuração, mas uma vez que é criado ele funciona bem.
A liberação maio do Delphi Prism tem suporte AOP no nível da linguagem.
Você pode descobrir mais sobre ele aqui
http://prismwiki.codegear.com/en/Cirrus
Há também uma biblioteca de código aberto de aspectos a partir desta localização