Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 21364|Respuesta: 1

[Fuente] .net/C# utiliza Attributes para implementar AOP simple

[Copiar enlace]
Publicado en 18/4/2017 14:54:11 | | |

Empecemos con un sencillo fragmento de código:



Digamos que es un programa web, queremos comprobar primero la sesión, luego los permisos, iniciar una transacción, escribir un registro, luego ejecutar la operación y finalmente escribir un registro. Obviamente, no podemos escribir todas las llamadas a métodos para las operaciones anteriores en DoSomething(), así que el código se convertirá en un gran desastre, ¿qué deberíamos hacer?

Hay muchas formas de implementarlo, como usar frameworks como Spring, pero en proyectos reales no es posible introducir un framework de forma casual, y muchas veces necesitamos escribir algunos mecanismos por nuestra cuenta.

Aquí pienso en el Filtro en MVC, mientras pongas una etiqueta de atributo en el Controlador o la Acción, puedes hacer otras cosas antes y después de ejecutar el método. Así que simplemente simulemos una implementación de filtro.

En primer lugar, el método original se transforma en una forma elegante de etiquetas de características:




Con las etiquetas de características, debe haber clases correspondientes a etiquetas de características, así como implementaciones de AOP, que pueden contenerse de forma independiente en un archivo o ensamblador.

Primero, la etiqueta adjunta al método, implementada como vacía:

//贴在方法上的标签
[UsoAtributo(ObjetivosAtributos.Método, PermiteMúltiple = false)]
clase pública sellada MyInterceptorMethodAttribute : Attribute { }
Después de eso, define la etiqueta que se va a asociar a la clase:




Aquí tienes una clase MyAopHandler definida, implementada de la siguiente manera:




Ten en cuenta que la parte específica de operación del código anterior es equivalente a una "clase proxy", que esencialmente cambia el contexto de la ejecución del método. Las estructuras de programas orientadas a objetos, como los delegados, pueden utilizarse para exponer la implementación específica al mundo exterior para desarrollo secundario.




Anterior:ES5, ES6, ES2016, ES. Siguiente: ¿Qué está pasando con la versión de Javascrip{filter}t?
Próximo:Tutorial de PowerShell para empezar - versión v0.3
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com