Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB.NET] Valutazione stringa

    Salve,
    ho un problema che mi sta facendo diventare matto ovvero:

    Ho la necessità di una funzione che datagli in pasto la stringa contenente il nome di una variabile dichiarata pubblica all'interno del progetto, mi restituisca il suo valore.

    Sostanzialmente pensavo ad una cosa così:

    'Variabili pubbliche dichiarate in un modulo nel progetto
    Public Variable as Integer = 1
    Public Variable2 as String = "abcd"

    'Funzione chiamata in corrispondenza di un evento
    Evaluate("Variable") -> questo dovrebbe ritornarmi 1
    Evaluate("Variable2") -> questo dovrebbe ritornarmi abcd

    Ovviamente non sono impazzito, questo sistema mi serve perchè ho da generare a runtime dei file txt basati su dei pattern che ho archiviato in un database e dovrei sostituire ai nomi delle variabili ,contenute nella stringa rappresentante il pattern, gli effettivi valori delle stesse a runtime.

    Ho tentato con la compilazione a runtime (CodeDOM) ma non riesco a passare al compilatore il modulo contenente le variabili.

    Grazie
    Quando si è innamorati, si comincia sempre con l'ingannare se stessi e si finisce sempre con l'ingannare gli altri. Questo è ciò che il mondo chiama una "storia d'amore" (O. Wilde)

  2. #2
    codice:
    Imports System.Reflection
    
    Public Class MyClass
    
        Public variabile As Integer = 1
    
        Private Function GetMyPublicVar(ByVal NomeVar As String) As Object
            Try
    
                Dim t As Type = Me.GetType()
    
                Dim FI As FieldInfo = t.GetField(NomeVar, BindingFlags.Public Or BindingFlags.Instance)
    
                Return FI.GetValue(Me)
    
            Catch ex As Exception
    
                Throw ex
    
            End Try
    
        End Function
    
        Private Sub UnaSubQualunque()
    
            Dim i As Integer = CType(GetMyPublicVar("variabile"), Integer)
    
        End Sub
    
    End Class

    ovviamente lo devi adattare al tuo caso in ciu le variabili sono in un modulo a parte e non all'interno della stessa classe che ne cerca il valore.

  3. #3
    Grazie mille!

    Unico problema, non riesco a passare le variabili del modulo
    Quando si è innamorati, si comincia sempre con l'ingannare se stessi e si finisce sempre con l'ingannare gli altri. Questo è ciò che il mondo chiama una "storia d'amore" (O. Wilde)

  4. #4
    dunque, essendo di un modulo non sono d'istanza giusto? sono statiche, ci accederesti con NomeModulo.NomeVariabile.
    In questo caso i bindingflags non devono essere BindingFlags.Public Or BindingFlags.Instance
    bensì BindingFlags.Public Or BindingFlags.Static
    e quando fai il GetValue(Instance) essendo statica non esiste un istanza e quindi devi passare nothing

    getValue(nothing)

    il Type ovviamente deve essere quello del modulo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.