none
C#-Code aus Klasse erzeugen lassen RRS feed

  • Frage

  • Hallo,

    ich möchte eine Klasse zur Laufzeit einer Anwendung erzeugen lassen, durch User-Eingabe.

    Kann ich aus dieser Klasse C#-Code generieren und in Datei als Text speichern lassen?

    Danke

    Freitag, 3. August 2018 11:36

Antworten

  • Hi,
    na dann viel Spaß während der nächsten Monate, die für solch eine anspruchsvolle  Lösung veranschlagt werden sollten.

    Zuerst solltest Dir mal per Reflection die Ausgangsdaten holen (Namensräume, Klassen, Member, Zuordnung zwischen ihnen). Dann solltest Du für die darzustellenden Typen (Klassen, Member usw.) UseControls erstellen. Danach kannst Du die UserControls auf einer Oberfläche platzieren und mit der Logik zum Verschieben versehen. Das Schwierigste wird dann die "Routenberechnung", um die Beziehungen zwischen den einzelnen Objekten in der Oberfläche auf Basis der Ausgangsdaten darzustellen.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 3. August 2018 18:30

Alle Antworten

  • Hi,
    ja, das geht (auch recht einfach). Du schreibst den Code als Text, übersetzt ihn und führst ihn aus. Zum Übersetzen nutzt Du einen CodeDomProvider, der mit der CompileAssemblyFromSource-Methode den übersetzten IL-Code im RAM bereitstellt. Diesen Code kannst Du dann einfach ausführen.

    Was willst Du genau machen?


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 3. August 2018 11:46
  • Hi,

    eigentlich will ich sowas wie das Klassendiagram in einer eigenen Anwendung, die Klassen erzeugt und abspeichert.

    MfG

    Freitag, 3. August 2018 13:17
  • Hi,
    ein Klassendiagramm ist ein TreeView, der in einer Oberfläche die Hierarchie der einzelnen im Projekt genutzten Klassen darstellt. Oder meinst Du etwas anderes? Um das darzustellen (Klassenansicht im TreeView), benötigst Du keine zur Laufzeit erzeugte Klasse, sondern nur eine Analyse der dll bzw. exe mittels Reflection.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 3. August 2018 14:06
  • Hi bei VS versteht man unter Klassendiagramm offenbar was anderes als Du ;-)

    https://i-msdn.sec.s-msft.com/dynimg/IC56514.jpg

    Da ist auch noch ein Editor dabei, mit dem man properties, fields usw. erstellen kann.


    • Bearbeitet UMorgenw Freitag, 3. August 2018 15:10
    Freitag, 3. August 2018 15:08
  • Hi,
    ok, da hatte ich etwas missverstanden. Ich dachte, Du meinst lediglich die Sicht auf die Namensräume und Klassen (rechts die Class View).

    Und was ist nun Dein Zeil? Willst Du einen Designer "nachprogrammieren"?


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 3. August 2018 15:50
  • ja genau, vielleicht erstmal einfacher, aber in der Art.

    Freitag, 3. August 2018 17:19
  • Hi,
    na dann viel Spaß während der nächsten Monate, die für solch eine anspruchsvolle  Lösung veranschlagt werden sollten.

    Zuerst solltest Dir mal per Reflection die Ausgangsdaten holen (Namensräume, Klassen, Member, Zuordnung zwischen ihnen). Dann solltest Du für die darzustellenden Typen (Klassen, Member usw.) UseControls erstellen. Danach kannst Du die UserControls auf einer Oberfläche platzieren und mit der Logik zum Verschieben versehen. Das Schwierigste wird dann die "Routenberechnung", um die Beziehungen zwischen den einzelnen Objekten in der Oberfläche auf Basis der Ausgangsdaten darzustellen.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 3. August 2018 18:30
  • Naja, erstmal reichen mir einfache Typen und und grafisch ein Propertygrid...

    Erstmal will ich den Rest der Technik ausarbeiten.

    Freitag, 3. August 2018 20:33