Cosa c'è di sbagliato nella classe System.Linq.Expressions.LogicalBinaryExpression?

.net expression-trees

Domanda

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?

Risposta accettata

LogicalBinaryExpression è internal , quindi:

  1. È più difficile da ottenere è come Type , non puoi semplicemente usare typeof(LogicalBinaryExpression) o x is LogicalBinaryExpression .
  2. Non troverai alcuna documentazione a riguardo.
  3. Non dovresti usarlo affatto. È un dettaglio di implementazione che può cambiare in qualsiasi momento.

È necessario verificare BinaryExpression o controllare il NodeType dell'espressione.

Lo stesso vale per MethodBinaryExpression .



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché