Hallo, ik ben bezig met het bouwen van een framework voor een toolbar in internet explorer in C#.Net. De toolbar heb ik al gemaakt mbv een tutorial op codeproject, waar ze een c++ library importeren in c#. Ik heb ook al een xml gemaakt, waarvanuit ik mijn toolbar opbouw. DIt gaat mbv Reflection, zodat ik, als ik maar het type klasse opgeef, elke waarde kan setten. Dus bijv:
Levert een Button op en mbv Reflection zegt ie Button.Height = 10;
Op zich werkt dit perfect, alleen is de HoofdKlasse die BandObject implementeerd een geval apart. Je kan namelijk niet zeggen BandObject oBandObject = new BandObject(). Maar ik compileer de klasse en voeg hem toe aan mn runtime en de toolbar is toegevoegd.
Omdat ik graag een mooi programma wil opleveren, die makkelijk aan te passen is. Wou ik het mooi ontwerpen en de constructie en de acties en dergelijke mbv designpatterns als builder, command en visitor op te lossen. Zodat als er veranderingen gemaakt moeten worden, er een eigen implementatie van een bepaald component gemaakt kan worden en deze wordt gebruikt ipv van de huidige.
Omdat het mainobject wordt geinstantieerd door het opstarten van IE, is de Main(), het BandObject. Daarom is mijn idee om het toewijzen van het model en dergelijke, in het xml te plaatsen. Bijv:
Nu heb ik hiermee de volgende problemen, ik hoop dat iemand me op de goede weg kan helpen.
Als ik een object wil opbouwen vanuit xml, doe ik dit met Activator.CreateInstance(in Type had ik ook zoiets gezien). Alleen voor deze methodes heb je de volledige AssemblyQualifiedName nodig. En dit vind ik lelijk als ik dat in mn xml plaats.
Het tweede en lastigste probleem is dat deze toolbar geimplementeerd bij verschillende clients moet draaien. En opgebouwdt door een xml wat vanuit de database wordt gegenereerd. Alleen al zou ik een andere implementatie voor iets willen gebruiken en ik deze klasse in mijn xml zet, moet deze klasse ook bij de client op de pc staan. Nu ik erover nadenk, is dat misschien wel makkelijk op te lossen door deze up te loaden.
Mijn laatste probleem waar ik helemaal niet uit kom, is het instantieren van objecten via xml. Als ik classnames uit de standaard .NET lib gebruik, is er niks aan de hand. Maar als ik klassen probeer te instatieren die ik zelf heb gemaakt, lukt dat niet. Ik vraag de AssemblyQualifiedName van de klasse op door een object te maken en met getType de AssemblyQualifiedName te outputten. Maar als ik die string gebruik bij Type.getType() krijg ik een nullreferenceexception:(.
Maar mensen, wat denken jullie. Enige tips, zit ik op de goede weg, of zal ik het anders aanpakken.
XML:
1
2
3
| <Button> <Height>10</Height> </Button> |
Levert een Button op en mbv Reflection zegt ie Button.Height = 10;
Op zich werkt dit perfect, alleen is de HoofdKlasse die BandObject implementeerd een geval apart. Je kan namelijk niet zeggen BandObject oBandObject = new BandObject(). Maar ik compileer de klasse en voeg hem toe aan mn runtime en de toolbar is toegevoegd.
Omdat ik graag een mooi programma wil opleveren, die makkelijk aan te passen is. Wou ik het mooi ontwerpen en de constructie en de acties en dergelijke mbv designpatterns als builder, command en visitor op te lossen. Zodat als er veranderingen gemaakt moeten worden, er een eigen implementatie van een bepaald component gemaakt kan worden en deze wordt gebruikt ipv van de huidige.
Omdat het mainobject wordt geinstantieerd door het opstarten van IE, is de Main(), het BandObject. Daarom is mijn idee om het toewijzen van het model en dergelijke, in het xml te plaatsen. Bijv:
XML:
1
2
3
4
| <init> <DataSourceReader>XmlReader</DataSourceReader> <ModelBuilder>SimpleBuilder</ModelBuilder> </init> |
Nu heb ik hiermee de volgende problemen, ik hoop dat iemand me op de goede weg kan helpen.
Als ik een object wil opbouwen vanuit xml, doe ik dit met Activator.CreateInstance(in Type had ik ook zoiets gezien). Alleen voor deze methodes heb je de volledige AssemblyQualifiedName nodig. En dit vind ik lelijk als ik dat in mn xml plaats.
Het tweede en lastigste probleem is dat deze toolbar geimplementeerd bij verschillende clients moet draaien. En opgebouwdt door een xml wat vanuit de database wordt gegenereerd. Alleen al zou ik een andere implementatie voor iets willen gebruiken en ik deze klasse in mijn xml zet, moet deze klasse ook bij de client op de pc staan. Nu ik erover nadenk, is dat misschien wel makkelijk op te lossen door deze up te loaden.
Mijn laatste probleem waar ik helemaal niet uit kom, is het instantieren van objecten via xml. Als ik classnames uit de standaard .NET lib gebruik, is er niks aan de hand. Maar als ik klassen probeer te instatieren die ik zelf heb gemaakt, lukt dat niet. Ik vraag de AssemblyQualifiedName van de klasse op door een object te maken en met getType de AssemblyQualifiedName te outputten. Maar als ik die string gebruik bij Type.getType() krijg ik een nullreferenceexception:(.
Maar mensen, wat denken jullie. Enige tips, zit ik op de goede weg, of zal ik het anders aanpakken.
[ Voor 12% gewijzigd door Verwijderd op 14-10-2005 03:48 ]