Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    86

    [C#] PropertyInfo e GetValue

    Ciao ragazzi, il mio problema è il seguente:

    Ho una lista di oggetti con alcune proprietà, nulla di particolare, e l'esigneza di scorrere queste properietà con l'opzione di poter leggere il valore di queste proprietà secondo un indice ben definito. Ecco un esempio del codice

    codice:
     
    ... 
    public static List<obj> lista1 = new List<obj>();
    obj ob1 = new obj();
    ob1.quantum = 100;
    ob1.peso = 80;
    ob1.attrito = 1;
    lista1.Add(ob1);
    ... 
    lista1.Add(ob2);
    ...
    lista1.Add(ob3);
    
    foreach(PropertyInfo pi in typeof(obj).GetProperties())
    {
        MessageBox.Show(pi.Name+": "+pi.GetValue(lista1[2], null));  //<--- Mi interessa il 2 oggetto e basta.
    }
    public class obj
    {
        public int quantum{get; set;}
        public int peso{get;set;}
        public int attrito{get;set;}
    }

    Purtroppo però il sistema mi restituisce i valori delle proprietà dell'ultimo oggetto salvato come mai? Qualcuno può venire in mio soccorso, colgo l'occasione per ringraziare anticipatamente tutti.

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    se ti interessa il secondo oggetto allora l'indice per lista1 è 1 e non 2. L'indice parte da zero.

    lista1[0] -> primo oggetto
    lista1[1] -> secondo oggetto

    P.S.
    Per c# c'è il sub-forum apposito (anche se il nome a prima vista trae in inganno)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    86

    mi scuso per l'esempio impreciso

    Ciao, grazie per la risposta.... Ieri ho scritto di fretta perchè dovevo uscire e quindi ho fatto un esempio impreciso anche perchè so che il calcolatore da quando è stato creato comincia a contare da zero.

    Comunque qualunque indice specifico lui mi restituisce comunque le proprietà dell'ultimo oggetto in ogni caso. Idee?

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    purtroppo seguendo il tuo esempio non riesco a riprodurre il problema, a me funziona cosi come deve essere.

    ti posto il mio codice completo, sul notebook ho visual studio express per winphone ma il codice è facilmente adattabile per winform

    codice:
    public class Persona
        {
            public string Nome { get; set; }
            public string Cognome { get; set; }
            public int Eta { get; set; }
        }
    
        public partial class MainPage : PhoneApplicationPage
        {
            public static List<Persona> elenco { get; set; }
    
            // Constructor
            public MainPage()
            {
                elenco = new List<Persona>();
                elenco.Add(new Persona { Nome = "Nome 1", Cognome = "Cognome1", Eta = 11 });
                elenco.Add(new Persona { Nome = "Nome 2", Cognome = "Cognome2", Eta = 22 });
                elenco.Add(new Persona { Nome = "Nome 3", Cognome = "Cognome3", Eta = 33 });
                elenco.Add(new Persona { Nome = "Nome 4", Cognome = "Cognome4", Eta = 44 });
    
                InitializeComponent();
    
                foreach (PropertyInfo pi in typeof(Persona).GetProperties())
                { 
                    TextBox tb = new TextBox{ Text = pi.GetValue(elenco[1], null).ToString() };
                    ContentPanel.Children.Add(tb);
                }
            }
        }

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.