Extendiendo Small Basic en C# (¡Excelente blog !)


a1

http://mssbesp.wordpress.com/2009/05/19/extendiendo-small-basic-en-c/

Bueno y he aquí uno de los puntos más interesantes de Small Basic al pertenecer al .NET Framework, que podemos extender la API con nuevas funcionalidades desde otros lenguajes de la misma plataforma. Para el artículo he elegido C#, que es el que a mi más me gusta de todo .NET, ya que no tiene una sintaxis abigarrada como Visual Basic, por ejemplo.

Así que poniéndonos manos a la obra, lo primero es tener el Visual Studio 2008 o el Visual C# 2008 Express, cualquiera de los dos nos valdrá. Es posible que también funcione con las versiones del 2005, pero ya que Small Basic utiliza el .net framework 3.5, lo suyo sería utilizar como mínimo el Visual C# 2008 Express, que además es gratuito y no cuesta demasiado bajárselo uno mismo. Así que abrimos el Visual C# y seguimos los siguientes pasos:

  1. Creamos un nuevo proyecto de tipo “Biblioteca      de clases“.
  2. Añadimos como referencia el fichero “SmallBasicLibrary.dll”      que se encuentra dentro de la carpeta de Small Basic.
  3. Creamos una nueva clase estática:
    [SmallBasicType]
    public static class MiExtension { /* … */ }
  4. Añadimos con using en el código la librería: Microsoft.SmallBasic.Library
  5. Configuramos las propiedades del proyecto para generar la      documentación en XML: Propiedades ->      Generar -> Archivo      de documentación XML.
  6. Generamos la solución entera y copiamos la dll y el xml generados      en la carpeta release de nuestro proyecto, a la carpeta lib del directorio      de Small Basic (“C:\Archivos de programa\Microsoft\Small Basic\lib”). Hay      que tener en cuenta que por defecto no existe la carpeta lib, por lo que      hay que crearla de forma manual.

Y con estos pasos ya podemos empezar a trabajar para crear una extensión. Pero hay que tener en cuenta algunas cosas como que no está soportada la sobrecarga de funciones, por lo que no podemos tener dos funciones con el mismo nombre aunque reciban distintos parámetros. Todas las variables responden al tipo Primitive de la API interna del lenguaje, por lo que no podemos trabajar directamente con tipos de datos como int o string. Sabiendo esto aquí tenemos un esquema básico de como sería una extensión y sus tres diferentes tipos de elementos:

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

using Microsoft.SmallBasic.Library;namespace MisExtensiones   {

[SmallBasicType]

public static class MiExtension {

// Para definir   variables:

public static Primitive   Propiedad=new Primitive();

//   Para definir métodos:

public static void Metodo1()   {

//   Código del método…

}

public static void Metodo2(Primitive param) {

// Código del método…

}

public static Primitive   Metodo3() {

//   Código del método…

}

public static Primitive   Metodo4(Primitive param) {

//   Código del método…

}

//   Para definir manejadores de eventos:

public static event SmallBasicCallback Evento=null;

}

}

De esta forma al generar la dll del proyecto y añadirla al directorio de librerías de Small Basic, tendremos una nueva librería llamada MiExtension, con en este caso una propiedad, un manejador de eventos y cuatro funciones. Las posibilidades de esto son por decirlo de algún modo infinitas. Podemos añadir todo lo que queramos al lenguaje, teniendo en cuenta que no podemos repetir identificadores ya que ello confundiría a Small Basic. Por cierto que en este caso para la variable no hemos usado una propiedad de C#, pero podríamos haberla usado perfectamente y con ello podríamos limitar su escritura para hacerla solo de lectura, ya que hay cosas que no tiene sentido que el usuario las cambie de valor.

Con esto ya está de momento cubierto el lenguaje y la mayoría de sus puntos, por lo que a partir de aquí, hasta que salga una nueva versión de Small Basic, me pondré a hacer alguna que otra extensión y/o juego que colgaré en esta web cuando lo tenga listo y terminado. Aunque de momento hasta que termine junio, estaré con los exámenes para terminar la carrera y ello me va a tener bastante liado, por lo que seguramente no haya mucho movimiento por aquí hasta la última semana de junio. Así que a estudiar, jej.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s