Expression aus string erzeugen?

26/04/2008 - 22:43 von Golo Roden | Report spam
Hallo,

ich habe einen Expressiontree vom Typ Expression<Func<string, string>>
in einen String umgewandelt, so dass im String nun der eigentliche Code
steht, zum Beispiel: "c => c.ToLower()".

Wie kann ich aus diesem String, der den Code enthàlt, nun wieder den
ursprünglichen Expressiontree vom Typ Expression<Func<string, string>>
oder wenigstens den Delegaten vom Typ Func<string, string> erzeugen?

Viele Grüße,


Golo
 

Lesen sie die antworten

#1 Frank Dzaebel
27/04/2008 - 01:44 | Warnen spam
Hallo Golo,

ich habe einen Expressiontree vom Typ Expression<Func<string, string>> in
einen String umgewandelt, so dass im String nun der eigentliche Code
steht, zum Beispiel: "c => c.ToLower()".
Wie kann ich aus diesem String, der den Code enthàlt, nun wieder den
ursprünglichen Expressiontree vom Typ Expression<Func<string, string>>
oder wenigstens den Delegaten vom Typ Func<string, string> erzeugen?



Standardmàssig zunàchst nicht:

Type t = typeof(Expression<Func<string, string>>);
TypeConverter tc = TypeDescriptor.GetConverter(t);
bool canConvertToString = tc.CanConvertTo(typeof(string)); //true
bool canConvertFromString = tc.CanConvertFrom(typeof(string)); //false

Es gibt aber die "LINQ Dynamic Query Library" die Microsoft
über seine Visual Studio 2008 Samples in den C# LINQ-Samples
unter DynamicQuery zur Verfügung stellt. Du kannst damit
ein dynamisches Parsen Deines Strings in einen Expression Tree
über die Methoden: [ParseLambda und Parse] ermöglichen.

[Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library) - ScottGu's
Blog]
http://weblogs.asp.net/scottgu/arch...brary.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen