Hey, ik ben bezig met een applicatie. Deze wordt dynamisch opgebouwt aan de hand van de een xmlfile. IK heb nu een xmlfile gemaakt van een standaard object en in werkt:
Nu lees ik dit xml-bestand in op het begin dat de applicatie start(onLoad). En in principe zijn image(PictureBox) en button allebij Controls. Maar mij probleem is het volgende:
Dus ik lees eerst het xml in en met XPath lees ik bijvoorbeeld alle buttons in. Bij de methode getType() wordt er een nieuw object aangemaakt aan de hand van het type(uitgelezen uit xml).
Dan heeft elke object minimaal 4 waardes, namelijk :"x, y, width, height). En deze kunnen uit het xml opgehaald worden.
Op zich vind ik dit best een goede oplossing, alleen is het probleem dat ik 4 verschillende controls kan ophalen uit mn xml:"knop, plaatje, label, pulldown". De algemene values zijn gelijk, zoals:"x, y, width, height". Alleen bij bijvoorbeeld een button komen de values text en url erbij.
Ik zat te denken om een controlObject in de attatchValue methode te gooien, zodat de x,y,etc worden geset.
Omdat ik heb gehoord van D.R.Y.("Don't Repeat Yourself"), lijkt het me geen goed plan om een aparte methode te maken voor elk object. Ik dacht eerder dat elk object eerst geinstantieerd moet worden aan de hand van de xml. En dan gooi je deze in de attachValue. Bij de attachValue worden de vier hoofdValue's toegewezen. En in de default: is er weer een switch, waardoor de objecten aan de hand van hun type door hun eigen methode extra waardes krijgen. Bijv:
Wat denken julie van deze oplossing??
XML:
1
2
3
4
5
6
7
8
9
| [app] [button] [x]100[/x] [text]blaaa[/text] [/button] [image] [x]200[/x] [/image] [/app] |
Nu lees ik dit xml-bestand in op het begin dat de applicatie start(onLoad). En in principe zijn image(PictureBox) en button allebij Controls. Maar mij probleem is het volgende:
C#:
1
2
3
4
5
6
7
8
| private const string button = "button"; private Control getType( string type ) { switch(type){ case button: return new Button(); } } |
Dus ik lees eerst het xml in en met XPath lees ik bijvoorbeeld alle buttons in. Bij de methode getType() wordt er een nieuw object aangemaakt aan de hand van het type(uitgelezen uit xml).
Dan heeft elke object minimaal 4 waardes, namelijk :"x, y, width, height). En deze kunnen uit het xml opgehaald worden.
C#:
1
2
3
4
5
6
| private void attatchValue( Control control, string att, int value ) { switch(att){ case x: control.X = value; } } |
Op zich vind ik dit best een goede oplossing, alleen is het probleem dat ik 4 verschillende controls kan ophalen uit mn xml:"knop, plaatje, label, pulldown". De algemene values zijn gelijk, zoals:"x, y, width, height". Alleen bij bijvoorbeeld een button komen de values text en url erbij.
Ik zat te denken om een controlObject in de attatchValue methode te gooien, zodat de x,y,etc worden geset.
Omdat ik heb gehoord van D.R.Y.("Don't Repeat Yourself"), lijkt het me geen goed plan om een aparte methode te maken voor elk object. Ik dacht eerder dat elk object eerst geinstantieerd moet worden aan de hand van de xml. En dan gooi je deze in de attachValue. Bij de attachValue worden de vier hoofdValue's toegewezen. En in de default: is er weer een switch, waardoor de objecten aan de hand van hun type door hun eigen methode extra waardes krijgen. Bijv:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| private void attatchValue( Control control, string type, string att, int value ) { switch(att){ case x: control.X = value; default: switch(type) { case button: attactchValueToButton(Control control, string att, int value ) } } } private void attatchValueToButton( Control control, string att, int value ) { switch(att){ case text: control.Text = value; } } |
Wat denken julie van deze oplossing??