Sto cercando di analizzare Expression e ad un certo punto devo analizzare le espressioni con il tipo System.Linq.Expressions.LogicalBinaryExpression
. Questo nome di classe che prendo da orologio di debug. expression.GetType().ToString()
uguale a "System.Linq.Expressions.LogicalBinaryExpression"
. Ma non posso vedere questa classe nello spazio System.Linq.Expressions
nomi System.Linq.Expressions
. Da nessuna parte. La stessa cosa con la classe MethodBinaryExpression
.
Per poter controllare il tipo, preferisco davvero scrivere
expression is LogicalBinaryExpression
o expression.GetType() = typeof(LogicalBinaryExpression )
ma sicuramente no expression.GetType().ToString() == "System.Linq.Expressions.LogicalBinaryExpression"
Quindi ora ho solo un errore
Il nome del tipo o spazio dei nomi 'LogicalBinaryExpression' non esiste nello spazio dei nomi 'System.Linq.Expressions' (manca un riferimento all'assembly?)
Come è possibile?
LogicalBinaryExpression
è internal
, quindi:
Type
, non puoi semplicemente usare typeof(LogicalBinaryExpression)
o x is LogicalBinaryExpression
. È necessario verificare BinaryExpression
o selezionare il NodeType
dell'espressione.
Lo stesso vale per MethodBinaryExpression
.