Hi, vielleicht weiß hier ja jemand mehr bzw. kann mir helfen, ich komme einfach nicht weiter.
ich schreibe gerade eine Klasse mit der es möglich sein soll c# als script auszuführen, das läuft soweit auch alles! Mein Problem ist jetzt das ich das Script analysieren muss, sprich ich muss herausfinden welche Methoden in diesem Script aufgerufen werden.
Das Script soll so oder so ähnlich aussehen:
assemblies.Add("TestAssembly.dll");
TestAssembly.TestClass test1 = new TestAssembly.TestClass();
test1.Square(16);
Diese
assemblies.Add("TestAssembly.dll");
Zeile wird von mir ausgelesen und dient nur dazu die zusätzlich erforderlichen Assemblies dem Compiler (CSharpCodeProvider) zu übergeben. Mein Problem ist jetzt wie bekomm ich heraus das
test1.Square(16);
aufgerufen wird?
CSharpCodeProvider.Parse geht ja leider nicht, da bekommt man nur einen Fehler:
Dieser CodeDomProvider unterstützt die Methode nicht oder so ähnlich.
Bin für jeden Hinweis dankbar
Schonmal vielen dank für die Antwort.
Ich habs mir mal angeschaut aber wirklich durchblicken tue ich da (noch) nicht! Es muss doch eine Möglichkeit geben C# zu parsen und Methoden zu erkennen die aufgerufen werden!?
Hallo Captain-Party,
möglich ist das schon, aber MS hat nunmal CSharpCodeProvider.Parse nicht implementiert.
Du kannst natürlich mit Code-Dom deinen Code erst übersetzen und dann die erzeuge Assembly mit Reflection analysieren.
herbivore
Hi herbivore ,
hatte ich auch schon dran gedacht bzw. ich hab nen bischen rumprobiert.
Das Problem ist das ich die Rückgabewerte jeder Methode die im Script Aufgerufen wird benötige.
ohne das im Script selbst sowas steht wie
List<object> returnValues = new List<object>();
TestAssembly.TestClass test1 = new TestAssembly.TestClass();
returnValues.Add(test1.Square(16));
return returnValues;
Diesen Code will ich mir vor dem compilieren der Assembly selbst generieren.
wenn ich also Das Script in eine Assembly compiliereund diese dann analysiere müsste ich wieder code generieren und noch eine Assembly compelieren. Das erscheint mir etwas umständlich!
Probiere jetzt den Code/das Script selbst zu parsen, wie ich das machen soll weiß ich allerdings selbst noch nicht genau X(
Hättest du (jeder andere natürlich auch) vieleicht einen Ansatz oder Hinweis wie man so etwas realisieren könnte?
Du stellst Dir das glaube ich zu simple vor.
Warum gibt es zum Compilerbau riesige Aufsätze, und grosse complexe Tools?
Weil es kein einfaches Thema ist.
Schau mal auf codeplex.com unter den neuen Projekten.
http://www.codeplex.com/LazyParser
Hallo Captain-Party
Vielleicht hilft dir die NRefactory Bibliothek von SharpDevelop. (http://icsharpcode.com/OpenSource/SD/Download/)
vg,
Simon