Ich versuche, eine "Property Selector" aus einer Zeichenfolge zu generieren.Erstellen eines Eigenschaftenselektors Ausdruck aus einer Zeichenfolge
Lassen Sie mich ein wenig mit einem Praxisbeispiel erklären:
Wir haben eine Klasse Person mit einem Namen (string) Eigenschaft.
Ich konnte manuell ein „Auswahlmenü“ wie diese propertySelector Schreiben erstellen:
Expression<Func<Person, string>> propertySelector = x => x.Name;
Aber ich mag das gleiche Auswahlmenü mit meiner Methode erhalten.
var propertySelector = CreatePropertySelectorExpression<Person, string>("Name");
Was ich habe, ist so weit dies:
public static Expression<Func<TIn, TOut>> CreatePropertySelectorExpression<TIn, TOut>(string path)
{
Expression exp = Expression.Parameter(typeof(TIn), "x");
foreach (var property in path.Split('.'))
{
exp = Expression.PropertyOrField(exp, property);
}
return exp;
}
Aber ... ich habe und ungültige Gussfehler!
kann nicht implizit Typ 'System.Linq.Expressions.Expression' zu 'System.Linq.Expressions.Expression>' konvertieren. Eine explizite Konvertierung vorhanden ist (möglicherweise fehlt eine Guss?)
Ich bin sehr neu für Ausdrücke und ich weiß nicht, wie :(
bitte könnten Sie ein echtes Beispiel für die Verwendung hinzufügen? – InferOn
Es gibt einige Fehler in Ihrem Code, zum Beispiel Expression.Parameter wird ParameterExpression zurückgeben, Expression.PropertyOrField wird MemberExpression zurückgeben, aufrichtig verstehe ich nicht, was Sie erreichen würden – InferOn
Bitte überprüfen Sie die Bearbeitung, die ich gerade gemacht habe. Ich gebe ein viel besseres Beispiel. Vielleicht ist der Code falsch. Ich bin ein Neuling in Bezug auf Ausdrücke :(Vielen Dank im Voraus! – SuperJMN