Aquí podría ser tu PUBLICIDAD


Plantillas en VB

votos
2

Tengo un código VB (en realidad VBA) que es básicamente el mismo excepto por el tipo en el que opera. Como creo que el principio DRY es un buen principio rector para el desarrollo de software, quiero escribir una rutina para todos los diferentes tipos que necesitan ser operados. Por ejemplo, si tuviera dos fragmentos de código como estos:

Dim i as Obj1
Set i = RoutineThatReturnsObj1()
i.property = newvalue

Dim i as Obj2
Set i = RoutineThatReturnsObj2()
i.property = newvalue

Me gustaría tener algo así para manejar ambas instancias:

Sub MyRoutine(o as ObjectType, r as RoutineToInitializeObject, newvalue as value) 
   Dim i as o
   Set i = r
   i.property = newvalue
End Sub

Si estuviera usando C ++ generaría una plantilla y no diría nada más al respecto. Pero estoy usando VBA. Estoy bastante seguro de que no hay capacidad, como las plantillas C ++ en la definición del lenguaje VBA, pero ¿hay algún otro medio por el que pueda lograr el mismo efecto? Supongo que la respuesta es no, pero pregunto aquí porque tal vez haya alguna característica de VBA que me he perdido.

Publicado el 08/09/2008 a las 14:33
fuente por usuario Onorio Catenacci
En otros idiomas...        العربية       

1 respuestas

votos
1

No hay nada en VB6 que haga eso. Si actualiza a Visual Studio Tools for Office con .Net puede usar genéricos:

Function MyRoutine(Of O)(R As Delegate, newvalue As Object) As O
    Dim i As O = CType(r.Method.Invoke(Nothing, Nothing), O)

    'you need another parameter to tell it which property to use'
    ' and then use reflection to set the value'
    i.property = newvalue 
    return i
End Function
Respondida el 08/09/2008 a las 02:43
fuente por usuario Joel Coehoorn


Aquí podría ser tu PUBLICIDAD