Bonjour,
J'essaie de personnaliser un fichier de configuration en C#.
J'aimerais obtenir quelque chose de la sorte :
En fait, on a une balise vue avec comme sous-noeud la fenêtre principale et ses attributs. Ensuite, la fenêtre principale à des sous-noeuds correspondants aux différents contrôles fils de l'interface.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="View" type="App.Config.ViewHandler, App" /> </configSections> <View type="App.Config.View, App"> <MainWindow width="1000" height="800"> <MenuBar /> <Toolbar /> </MainWindow> </View> </configuration>
J'ai donc l'implémentation suivante :
Actuellement, j'ai une exception levée au niveau de la méthode Create de ViewHandler et plus précisément quand le constructeur XmlSerializer est appelé.
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 class ConfigManager { private View m_view; public View ConfView { get { return m_view; } } // Constructor public ConfigManager() {} public void Load() { m_view = (View)ConfigurationManager.GetSection("View"); } } // Generic class to deserialize a section. class NodeHandler<T> : IConfigurationSectionHandler { public object Create(object parent, object configContext, XmlNode section) { XmlSerializer xs = new XmlSerializer(typeof(T)); XmlNodeReader xnr = new XmlNodeReader(section); return xs.Deserialize(xnr); } } // View configuration class. public class View { private MainWindow m_mainWindow; public MainWindow ConfMainWindow { get { return m_mainWindow; } set { m_mainWindow = value; } } } // Deserialize the view section. class ViewHandler : NodeHandler<View> {}
Je dois mal définir les sous-noeuds dans mon fichier de configuration.
Avez-vous une idée?
Merci
Edit : Un premier problème est le fait que je n'appelle pas ma propriété de la même façon que la balise dans le fichier de configuration. Après modification, je n'ai plus d'exception mais j'ai toujours un problème de structure :s. Des idées ?
Partager