Was ist falsch an der Klasse System.Linq.Expressions.LogicalBinaryExpression?

.net expression-trees

Frage

Ich versuche, Ausdruck zu analysieren, und irgendwann muss ich Ausdrücke mit Typ System.Linq.Expressions.LogicalBinaryExpression . Dieser Klassenname nehme ich von der Debug-Watch. expression.GetType().ToString() gleich "System.Linq.Expressions.LogicalBinaryExpression" . Aber ich kann diese Klasse im System.Linq.Expressions Namespace nicht sehen. Nirgendwo. Das Gleiche gilt für die MethodBinaryExpression Klasse.

Um Typ zu überprüfen, schreibe ich lieber

  • expression is LogicalBinaryExpression oder
  • expression.GetType() = typeof(LogicalBinaryExpression ) aber definitiv nicht
  • expression.GetType().ToString() == "System.Linq.Expressions.LogicalBinaryExpression"

So, jetzt habe ich nur einen Fehler

Der Typ oder Namespacename 'LogicalBinaryExpression' existiert nicht im Namespace 'System.Linq.Expressions' (fehlt eine Assemblyreferenz?)

Wie ist das möglich?

Akzeptierte Antwort

LogicalBinaryExpression ist internal , also:

  1. Es ist schwieriger zu erhalten ist als ein Type , Sie können nicht einfach typeof(LogicalBinaryExpression) oder x is LogicalBinaryExpression .
  2. Sie werden keine Dokumentation darüber finden.
  3. Du solltest es überhaupt nicht benutzen. Es ist ein Implementierungsdetail, das jederzeit geändert werden kann.

Sie sollten entweder nach BinaryExpression oder den NodeType des Ausdrucks überprüfen.

Dasselbe gilt für MethodBinaryExpression .



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow