[VB.NET] MyClass.ToString()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Ik heb een vraagje omtrend het gebruik van het Converteren naar string
Ik ben aan het werk met een tooltje dat gebruik maakt van een settingsfile, in die settings worden een aantal waarden opgeslagen, waaronder ook een paar die voor de Doe-het-zelver niet getoond mogen worden.
Deze sla ik dan ook versleuteld op.

Werkt allemaal leuk en prima.
Voor die versleutelde strings, heb ik een aparte class aangemaakt.
Visual Basic .NET:
1
2
3
4
5
6
7
Public Class EncryptedString

    Private _EnCryptedString As String
    Friend Value As String

    '+ Allehande functies voor Encrypt/Decrypt, nu niet boeiend.
End Class


Wat ik graag zou willen is het volgende:
Als ik in de rest van mijn programma de Value wil hebben aanroepen, moet ik het volgende doen:
Visual Basic .NET:
1
2
   Dim Demo as EncrypedString()
   Msgbox Demo.Value


Het liefste zou ik de .Value weglaten
Visual Basic .NET:
1
2
   Dim Demo as EncrypedString()
   Msgbox Demo

Maar dan krijg ik uiteraard
'EncryptedString' cannot be converted to 'String'.

De vraag
Hoe kan ik er voor zorgen dat ik mijn object direct naar een String kan zetten?
Ik heb al flink gespeeld met het implementeren van de ToString() functie, maar daarmee krijg ik het niet voor elkaar.

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Msgbox verwacht een string, jij geeft een instantie van EncryptedString mee. Dat kan niet, dus gaat de compiler klagen. :)

Waarschijnlijk ga je je doel bereiken met conversion. Zie voor meer informatie: MSDN: How to: Define a Conversion Operator (Visual Basic)

De tegenhangers in C# heten explicit en implicit

[ Voor 10% gewijzigd door Alex) op 31-07-2012 09:57 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Sorry ik begreep u verkeerd <- Weg

[ Voor 91% gewijzigd door Armageddon_2k op 31-07-2012 10:03 ]


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Daarom moet je de link lezen die ik in mijn vorige post gegeven heb. Daarin staat namelijk wat je moet doen om je doel te bereiken. :)

[ Voor 9% gewijzigd door Alex) op 31-07-2012 10:00 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Ben al aan het lezen :)
Ik begreep je post verkeerd, ik dacht dat je een implicite conversie bedoelde. ik verwijder mn comment zo even :)

Works like a charm. Nu nog even in de materie verdiepen zodat ik snap wat er gebeurt.

Toegevoegd aan de code:
Visual Basic .NET:
1
2
3
4
5
6
7
    Public Shared Widening Operator CType(ByVal e As EncryptedString) As String
        Return e.Value
    End Operator

    Public Shared Narrowing Operator CType(ByVal s As String) As EncryptedString
        Return New EncryptedString(s)
    End Operator

[ Voor 59% gewijzigd door Armageddon_2k op 31-07-2012 10:04 ]