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

    VB.Net leggere campi e valore dei campi di una istanza a una struttura

    Salve, avrei bisogno di leggere una istanza ad una struttura con un for each, in modo da leggere tutti i nomi di variabili e il loro valore.
    Ho visto che si può fare su una struttura, es.:

    Public Structure kkk
    Public a As String
    Public b As Integer
    End Structure

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Infos() As FieldInfo
    Infos = GetType(kkk).GetFields
    Dim nome As String
    Dim tipo As Object
    For Each fi As FieldInfo In Infos
    nome = fi.Name
    tipo = fi.FieldType
    Next
    End Sub

    in questo caso ogni ciclo leggerà il nome di della variabile e il tipo.
    ---------------------------------------------------------



    ma come faccio a leggere il nome del campo e il suo valore quando creo una istanza? es.:

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim istanza As New kkk
    istanza.a = "stringa"
    istanza.b = 6
    Dim Infos() As FieldInfo
    Infos = GetType(istanza).GetFields
    Dim nome As String
    Dim tipo As Object
    For Each fi As FieldInfo In Infos
    nome = fi.Name
    tipo = fi.FieldType
    Next
    End Sub
    'questo non funziona

    oppure accedere alla variabile di una istanza con un indice, o con una variabile e recuperarne il valore. es.:

    dim valore as string
    valore = istanza.(1).GetValue
    oppure
    valore = istanza.("a").GetValue

    (naturalmente GetValue non è corretto, è che non so cosa usare...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Il nome e il tipo dei campi li leggi dalla struttura, le istanze non hanno nomi o tipi diversi quindi non ha senso partire dalle istanze (anche se � discutibile ottenere queste informazioni ... non so a cosa potrebbero servire all'interno di un programma ...)

    Per la questione delle istanze, devi crearle ed aggiungerle in una collection come una List.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    in realtà mi serve recuperare il valore, principalmente.
    assegnando l'istanza ad una list, posso farlo?
    Ti spiego in dettaglio di cosa ho bisogno:

    Ho creato una funzione generalizzata per un update su tabelle sqlserver
    ho creato quindi per ogni tabella da gestire una structure con una variabile per ogni campo della tabella.
    Una volta istanziata, e dopo aver assegnato i valori alle variabili, richiamo la function per l'update sulla tabella, passando nometabella, istanza e campo per la where.
    Quello che vorrei fare è generare dinamicamente la query update, leggendo con un ciclo il nome e valore di ogni variabile dell'istanza...

    Quindi, il nome di variabile e il tipo è semplice operando sulla structure, ma il valore della variabile come lo recupero? devo farlo sull'istanza.

    Se non sono stato chiaro ti giro il codice.

  4. #4
    Ok, risolto. molto più semplice di quanto pensassi

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da lcuccurullo Visualizza il messaggio
    Ok, risolto. molto più semplice di quanto pensassi
    E quindi? Come?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Così:

    Public Structure Struttura
    Public primo As String
    Public secondo As Integer
    Public terzo As Double
    End Structure


    Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim istanza As New Struttura
    istanza.primo = "Nome Cognome"
    istanza.secondo = 6
    istanza.terzo = 6.5


    Dim Infos() As FieldInfo
    Infos = istanza.GetType.GetFields
    Dim nome As String
    Dim tipo As Type
    Dim valore As Object
    For Each fi As FieldInfo In Infos
    nome = fi.Name
    tipo = fi.FieldType
    valore = fi.GetValue(istanza)
    Next
    End Sub

    in ogni ciclo legge una variabile, il suo nome, il tipo e il valore.
    Non avevo capito che GetValue richiedeva l'istanza come parametro.
    Ultima modifica di lcuccurullo; 01-03-2017 a 09:55

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.