2010-07-08 3 views
0

J'essaie d'utiliser PropertyInfo dans une classe et de créer une donnée à partir de celle-ci. Cependant, il ne renvoie aucune valeur. Je suis un peu perplexe;Membres de l'objet qui ne sont pas renvoyés par PropertyInfo C#

public class thetransactions 
{ 
    public string FirstName; 
    public string Surname; 
    public string PreviousOwner; 
    public string NewOwner; 
    public string postcode; 
    public string[] FileName; 
} 

Ensuite, faites le travail avec ce code;

theTransactions[] thetransactions = new theTransactions[10]; 
thetransactions[0] = JsonConvert.DeserializeObject<theTransactions>(mydatastring); 

PropertyInfo[] properties = thetransactions.GetType().GetElementType().GetProperties(); 
DataTable sampletable = new DataTable(); 
DataColumn dc = null; 

foreach (PropertyInfo pi in properties) 
{ 
    dc = new DataColumn(); 
    dc.ColumnName = pi.Name; 
    dc.DataType = pi.PropertyType; 
    sampletable.Columns.Add(dc); 
} 

Répondre

2

Le problème est que vous définissez normales variables dans votre classe thetransactions et non des propriétés:

public class thetransactions 
{ 
    public string FirstName{get;set;} 
    public string Surname{get;set;} 
    public string PreviousOwner{get;set;} 
    public string NewOwner{get;set;} 
    public string postcode{get;set;} 
    public string[] FileName{get;set;} 
} 
+0

je reçois un NullReferenceException lorsque je change de regarder [0], étrange parce qu'il sont des objets présents. Mon seul intuition est peut-être que certaines de mes propriétés sont nulles, par exemple NewOwner a une valeur nulle attachée. Bien que je ne m'intéresse pas particulièrement aux valeurs, je veux juste saisir les noms et les types de colonnes. – wonea

+0

J'ai mis à jour ma réponse; cela devrait résoudre votre problème maintenant. La première version de ma réponse contenait le mauvais indice; désolé pour cela –

+0

Fantastique! Je suppose que PropertyInfo appelle la méthode get pour chaque type? – wonea

Questions connexes