Das Objekt des Typs 'System.Linq.Expressions.UnaryExpression' konnte nicht in den Typ 'System.Linq.Expressions.MemberExpression' umgewandelt werden.

Erstellte ich eine Methode in C# zu bekommen methodname

public string GetCorrectPropertyName<T>(Expression<Func<T, string>> expression)
{
   return ((MemberExpression)expression.Body).Member.Name; //Failure Point
}

und nannte es als

string lcl_name = false;
public string Name
{
get { return lcl_name ; }
set 
    {
        lcl_name = value;
        OnPropertyChanged(GetCorrectPropertyName<ThisClassName>(x => x.Name));
}
}

Dies funktioniert gut, wenn die Eigenschaft "string", und für alle anderen Typen gibt diese Ausnahme:

Unable to cast object of type 'System.Linq -.Ausdrücke.UnaryExpression' type 'System.Linq -.Ausdrücke.MemberExpression'.

  1. Ich geändert-string zu object in der Signatur der Methode, aber dann scheitert es wieder.
  2. Änderte ich den Aufruf von x => x.PropertyName zu x => Convert.ToString(x.PropertyName) und es immer noch nicht

Wo bin ich falsch?

InformationsquelleAutor der Frage Nikhil Agrawal | 2012-09-14

Schreibe einen Kommentar