Benutzer mit den meisten Antworten
Dynamische Codegenerierung

Frage
Antworten
-
Hallo Alex!
Eine Möglichkeit wäre Microsoft Roslyn CTP (http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx). Das erlaubt es dir in eine vorhandene Assembly (DLL oder EXE) Code einzufügen und diese neu zu kompilieren.
Eine andere Möglichkeit wäre die Verwendung eines ExpandoObjects (http://msdn.microsoft.com/de-de/library/system.dynamic.expandoobject.aspx). Dem kann man dynamisch Methoden/Eigenschaften/Attribute hinzufügen.
Viele Grüße,
Thomas Fröhle
App-Entwickler-Hotline für MSDN Online Deutschland
Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die App-Entwickler-Hotline: http://www.msdn-online.de/Hotline
Es gelten für die App-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu MarkenzeichenInformationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die App-Entwickler-Hotline.- Bearbeitet Thomas Fröhle Dienstag, 30. Juli 2013 10:43 typo
- Als Antwort markiert alexfiftyfour Dienstag, 30. Juli 2013 14:47
-
Hallo, Thomas hat dir bereits Wege auf gezeigt, wie man das tun kann. Ich möchte aber nochmal mdarauf hinweisen,. das es vielleicht bessere Möglichkeiten gibt. Das hängt aber von deinem genauen Vorhaben ab.
Eventuell ist auch CodeDom was für dich? Ein Beispiels gibts hier:
http://support.microsoft.com/kb/304655/de<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert alexfiftyfour Dienstag, 30. Juli 2013 14:47
Alle Antworten
-
Hallo Alex!
Eine Möglichkeit wäre Microsoft Roslyn CTP (http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx). Das erlaubt es dir in eine vorhandene Assembly (DLL oder EXE) Code einzufügen und diese neu zu kompilieren.
Eine andere Möglichkeit wäre die Verwendung eines ExpandoObjects (http://msdn.microsoft.com/de-de/library/system.dynamic.expandoobject.aspx). Dem kann man dynamisch Methoden/Eigenschaften/Attribute hinzufügen.
Viele Grüße,
Thomas Fröhle
App-Entwickler-Hotline für MSDN Online Deutschland
Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die App-Entwickler-Hotline: http://www.msdn-online.de/Hotline
Es gelten für die App-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu MarkenzeichenInformationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die App-Entwickler-Hotline.- Bearbeitet Thomas Fröhle Dienstag, 30. Juli 2013 10:43 typo
- Als Antwort markiert alexfiftyfour Dienstag, 30. Juli 2013 14:47
-
Hallo, Thomas hat dir bereits Wege auf gezeigt, wie man das tun kann. Ich möchte aber nochmal mdarauf hinweisen,. das es vielleicht bessere Möglichkeiten gibt. Das hängt aber von deinem genauen Vorhaben ab.
Eventuell ist auch CodeDom was für dich? Ein Beispiels gibts hier:
http://support.microsoft.com/kb/304655/de<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert alexfiftyfour Dienstag, 30. Juli 2013 14:47
-
Hallo Thomas,
danke für den Link zu Roslyn. Leider geht das laut Website nur für VS 2012. Ich bin noch bei 2010. Da MS die Kachelgeschichte gemacht hat und die Farben vom VS so kontrastarm gestaltet hat, lässt sich das 2012 eigentlich nicht mehr benutzen. Schade.
Dafür ist das Expandoobject ganz interessant. Ich werde es mir mal anschauen. Bei normalen Objekten kann man aber keine Methoden dynamisch hinzufügen, oder?
Alex
-
Mit dem CodeDom hab ich mir dynamisch eine Assembly gebaut, die den Code enthält, den ich ausführen möchte. Das funktioniert auf jeden Fall.
Netter wäre es aber, wenn ich einer vorhandenen Klasse (keine Expando oder so) einfach zur Laufzeit eine Methode hinzufügen könnte. Mit CodeDom hab ich eine neue Klasse entworfen.
-
Hi Alex,
der Klassische Ansatz Klassen um Methoden zu erweitern deren Code du bei der Implementierung nicht kennst, sind Delegats.
Mann kann auch Dependency Injection verwenden, z.B. mit einen Interface und das über MEF auflösen.
Oder das Strategie Pattern verwenden.
Oder Extension Methods.
Wie Koopakiller schon sagt hängt es davon ab was du genau machen möchtest.
Wäre nett wenn du das mal erläutern würdest.
MFG
Björn