Ik heb eens zitten kijken naar de System.Reflection.Emit-namespace en volgens mij kun je daar hele leuke dingen mee. Ik vraag me alleen af wat de handigste manier is om dynamisch code te genereren.
Het netst is via de Emit-namespace en de MethodBuilder, PropertyBuilder, etc., maar dan moet je (volgens mij) overal met OpCodes gaan werken en dat is nogal onhandig
Wat mij handiger lijkt, is zelf een cs-file schrijven en daar gewoon dmv bijv.
Nadeel hierbij is dat het makkelijker fout kan gaan.
Heeft iemand hier meer ervaring mee of nog goede ideeen over?
Is de gegenereerde code trouwens ook nog te compilen zonder daarvoor de VS-compiler (csc.exe) voor te moeten gebruiken?
Het netst is via de Emit-namespace en de MethodBuilder, PropertyBuilder, etc., maar dan moet je (volgens mij) overal met OpCodes gaan werken en dat is nogal onhandig
Wat mij handiger lijkt, is zelf een cs-file schrijven en daar gewoon dmv bijv.
code:
code naartoe te schrijven.1
2
3
4
| file.WriteLine("if (a == true)\n");
file.WriteLine("{\n");
file.WriteLine("\t <code> \n");
file.WriteLine("}\n"); |
Nadeel hierbij is dat het makkelijker fout kan gaan.
Heeft iemand hier meer ervaring mee of nog goede ideeen over?
Is de gegenereerde code trouwens ook nog te compilen zonder daarvoor de VS-compiler (csc.exe) voor te moeten gebruiken?
[ Voor 29% gewijzigd door maikel op 22-05-2003 11:51 ]