2010-02-05 11 views

Respuesta

8

AOP es posible en .NET. Aquí hay un article al respecto. Y aquí hay un list of AOP frameworks para .NET.

+6

Si bien esto puede responder teóricamente a la pregunta, [sería preferible] (http://meta.stackoverflow.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. –

4

Echa un vistazo a PostSharp, un marco AOP para .NET.

En términos de registro y temporización, también hay un marco llamado Gibraltar que se integra con PostSharp y que debería facilitar la recopilación y el uso de los resultados. Sigo pensando en intentarlo ...

+0

Me pregunto si marcos como estos se basan en la reflexión. Además, el enlace de PostSharp.org aquí ha cambiado a https://www.postsharp.net/ – matrixugly

+0

@matrixugly: se corrigió el enlace, pero no, no se puede hacer todo esto solo con reflexión: se necesita una reescritura IL, básicamente . –

+0

eso es lo que reuní. No me gusta la idea de una biblioteca de terceros (o incluso la mía) en el código emitido. Parece que PostSharp realmente escanea el IL. Me pregunto si una versión simple de esto podría cargar un ensamblaje y usar la reflexión para emitir la versión "AOP-izada" del dll. (¿De esta forma no hay escaneo de la IL?) – matrixugly

1

Puede hacer esto sin tener que usar un compilador diferente si usa PostSharp.

1

Usando sólo la biblioteca .NET framework estándar, se tendría que crear la funcionalidad de ajuste mediante la derivación de System.Runtime.Remoting.Proxies.RealProxy.

Esta funcionalidad se puede aplicar a su clase, pero esta clase tiene que derivar de System.MarshalByRefObject.

Esto es bastante restrictivo, es por eso que es posible que desee consultar componentes de terceros como PostSharp.

Cuestiones relacionadas