Noticias

* Completa este formulario para conocer los temas de tu interes, te tomará unos segundos.

* Contenido actualizado diariamente!!

* Nueva categoría JavaScript!, aprender javascript está en tus manos!

* Nueva categoría VB .Net!, aprender VB .NET fácilmente con franvarvil!

* Sigue a la página para seguir creciendo!!

sábado, 2 de mayo de 2020

VB.Net: Clases de Extensión, Extension Class, Methods

No hay comentarios :
Introducción

Algunas ocaciones queremos tener muchas funcionalidades en una sola clase, pero esto va contra los principios de una programación limpia, es por esto que Visual Basic .Net dispone de una herramienta llama Extesion, la cual nos permite extender el funcionamiento de nuestra clase con otra clase de tipo extension.

Desarrollo

Las clases y métodos extensión nos permiten extender nuestro funcionamiento, separando la responsabilidad lógica de nuestra clase principal en otras. Este tipo de clases y funciones de extensión se ligan automaticamente a nuestra clases principal, pero para ello se deben cumplir ciertos requisitos:
  • La clase deber ser un Módulo.
  • El nombre de la clase debe ser la unión del nombre de nuestra clase principal y Extension.
  • En cada método o función se debe dar la anotación <Extension()>
Para un ejemplo sencillo, imaginemos que tenemos la clase Persona, declarada de la siguiente forma:

Public Class Persona 

    Public Property Name As String
    Public Property LastName As String

End Class

Es una clase muy simple, con dos propiedades: nombre y apellido. Ahora bien, queremos realizar una función que nos retorne el nombre completo de la persona, para eso crearemos un clase de extensión para la clase persona aplicando los tres puntos anteriores, de la siguiente manera:

Imports System.Runtime.CompilerServices

'Se crea un módulo con el nombre de nuestra clase + Extension
Module PersonaExtension

    ' Se agrega la etiqueta para que el método sea extendido.
    ' Se debe recibir un objeto de tipo Persona aunque este no se envía
    <Extension()>
    Public Function GetFullName(pPerson As Persona) As String
        ' Se concatenan las propiedades y se retorna
        Return pPerson.Name & " " & pPerson.LastName
    End Function

End Module

De esta forma si creamos una instancia persona podremos llamar a la función GetFullName a pesar de que esta está en otra clase físicamente.

Dim Persona as lPersona = new Persona()
lPersona.Name= "FranVarVil"
lPersona.LastName = "Blog"

Console.WriteLine(lPersona.GetFullName())
'Output: FranVarVil Blog


Conclusión

La funcionalidad de extensión nos permite mantener las funciones de una clase unidas, manteniendo la integridad y siguiendo el principio de responsabilidad única. Lo que nos permite separar en capas o subdividir nuestra funcionalidad según el nivel dentro de la arquitectura de nuestro proyecto. 

No hay comentarios :

Publicar un comentario