Bonjour,
J'ai des fichiers XML, des classes correspondant et j'aimerais faire une méthode qui me charge automatiquement une (ou plusieurs) classe à partir d'un XML.
J'ai déjà commencé:
test.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <root obj="ClassLibrary1.Class1"> <Plop>Ploup</Plop> <Plop>Plip</Plop> <Plop>Plap</Plop> <Plip>2</Plip> <Plaps obj="ClassLibrary1.Class2"> <Plap>2</Plap> </Plaps> </root>
Class1.vb
Module1.vb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public Class Class1 Public Property Plop As List(Of String) Public Property Plip As Int32 Public Property Plaps As Class2 End Class
La liste se charge,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Dim obj As Object = AppDomain.CurrentDomain.CreateInstance("ClassLibrary1", className).Unwrap Dim props As PropertyInfo() = obj.GetType.GetProperties For Each prop As PropertyInfo In props Dim value = Nothing Dim prop_type As Type = prop.PropertyType 'ici, j'aimerais que value prenne le type de la PropertyInfo.. 'j'ai essayé: ' 'value = prop_type.GetConstructor(New System.Type() {}).Invoke(New Object() {}) 'mais exception de type NullReferenceException (sauf pour la liste..) Next
la class2 se charge,
mais NullReferenceException pour les types Integer et String (j'en ai pas essayé d'autres pour le moment) et prop_type isnot nothing (j'ai vérifié!)
Je ne sais pas trop comment faire.. auriez-vous une idée?
ps: j'ai un peu épuré le code dans le module1 pour vous donc n'ayez pas peur si il manque des conditions, etc.
Partager