He estado buscando una respuesta a un problema similar y en el proceso me encontré con este aquí. En realidad, la respuesta de John me indicó la dirección a la que tenía que ir. Y podría ayudar con la pregunta original, así:
Mi Problema: que necesitaba algo que podría utilizar como un entero
Dim myVal as Integer
myVal = 15
If myVal = 15 then
...
End If
... y así sucesivamente ... Sin embargo yo necesitaba cosas adicionales, así
myVal.SomeReadOnlyProperty (as String)
myVal.SomeOtherReadOnlyProperty (as Integer)
(en realidad esas propiedades podrían ser de sólo lectura Métodos así ...)
etc ... así que realmente se necesita un objeto
Estaba pensando en métodos de extensión de Entero (@ _ @) ... Yo no quiero ir por ese camino ...
También pensé en escribir un "ReadOnlyPropertyOracle" como una clase separada y darle métodos como
GetSomeReadOnlyProperty(ByVal pVal as Integer) as String
GetSomeOtherReadOnlyProperty(ByVal pVal as Integer) as Integer
weeeell .... Eso hubiera funcionado pero se veía espantosa ...
Así llegaron en Hack de Juan y el comentario de Brian MacKay acerca de los operadores: la combinación de ambos, ampliación/conversión de restricción operadores (para asignación) y operación de comparación rs para ... bien la comparación. aquí es parte de mi código y lo hace lo que necesito:
'The first two give me the assignment operator like John suggested
Public Shared Widening Operator CType(ByVal val As Integer) As MySpecialIntType
Return New MySpecialIntType(val)
End Operator
'As opposed to John's suggestion I think this should be Narrowing?
Public Shared Narrowing Operator CType(ByVal val As MySpecialIntType) As Integer
Return val.Value
End Operator
'These two give me the comparison operator
'other operators can be added as needed
Public Shared Operator =(ByVal pSpecialTypeParameter As MySpecialIntType, ByVal pInt As Integer) As Boolean
Return pSpecialTypeParameter.Value = pInt
End Operator
Public Shared Operator <>(ByVal pSpecialTypeParameter As MySpecialIntType, ByVal pInt As Integer) As Boolean
Return pSpecialTypeParameter.Value <> pInt
End Operator
Sí, esto seguirá siendo 1-2 docena de definiciones operador de una sola línea, pero la mayoría de ellos son triviales con poco margen de error ;-) Así que esto funciona para mí ...
Interesante comentario. No resuelve mi problema, pero al menos me da algunos antecedentes sobre la situación, ¡gracias! –
Si no responde su pregunta, ¿por qué la marcó como la respuesta correcta? –
Porque la respuesta a mi problema es: no puedes hacerlo. Este tipo brindó la mejor explicación de por qué no funcionará. –