Decoradores tipo Python para funciones en C Sharp utilizando atributos y la API de Roslyn

Autores/as

  • Antonio Alejo Combarro Programming Department, Havana University, Havana
  • José Manuel Espinoza Programming Department, Havana University, Havana
  • Ludwig Leonard Méndez Programming Department, Havana University, Havana https://orcid.org/0000-0002-6111-4031
  • Miguel Katrib Mora Programming Department, Havana University, Havana, Cuba,

Palabras clave:

Metaprogramación, Roslyn, Python, Decoradores, C Sharp

Resumen

Python se ha convertido en los últimos años en uno de los lenguajes de programación más populares. Cuando la capacidad de Python para interceptar llamadas a función se combina con su declaratividad, a través de los decoradores podemos tener una manera perfecta de inyectar funcionalidad adicional a código existente. Implementar decoradores en lenguajes de tipado dinámico como Python es sencillo, pero para los lenguajes con tipado estático como C Sharp o Java, este tipo de sustitución sería imposible en tiempo de ejecución. Los trabajos anteriores para proporcionar a estos lenguajes de esta funcionalidad se basaron en el uso de un enfoque de byte-code weaving. Este trabajo propone en su lugar utilizar un enfoque de source-code weaving en C Sharp utilizando la API de su compilador actual (Roslyn). Siguiendo este enfoque, se presenta un algoritmo para tener el efecto de decoración tipo Python para funciones en C Sharp. Se realizaron experimentos para comparar la eficiencia de la propuesta con respecto a una herramienta comercial obteniéndose buenos resultados.

Descargas

Los datos de descargas todavía no están disponibles.

Citas

Joseph Albahari and Ben Albahari. C# 7.0 in a Nutshell: The Definitive Reference, chapter 3, pages 95–96. O’Reilly Media, 2017.

Joseph Albahari and Ben Albahari. C# 7.0 in a Nutshell: The Definitive Reference, chapter 6, pages 276277. O’Reilly Media, 2017.

Jason Bock. .NET Development Using the Compiler API. Apress, 2016.

Steve Fenton. Pro TypeScript Application-Scale JavaScript Development, chapter 1, pages 76–81. Apress, Berkeley, CA, 2nd edition, 2018.

Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995.

GitHub. dotnet/roslyn: The roslyn .net compiler provides c# and visual basic languages with rich code analysis apis., 2019.

Joe Kunk. Aspect-oriented programming with postsharp.

Eric Lippert. Hiring for roslyn, 2010.

Neil McAllister. Microsoft’s roslyn: Reinventing the compiler as we know it, 2011.

Microsoft. What’s new in visual studio 2015, 2014.

Descargas

Publicado

2024-03-26 — Actualizado el 2019-12-12

Versiones

Cómo citar

[1]
Alejo Combarro, A. et al. 2019. Decoradores tipo Python para funciones en C Sharp utilizando atributos y la API de Roslyn. Ciencias matemáticas. 33, 2 (dic. 2019), 179–188.

Número

Sección

Artículo Original