2012-02-11 23 views
12

मैं अभिव्यक्ति को पार्स करने की कोशिश कर रहा हूं और किसी बिंदु पर मुझे System.Linq.Expressions.LogicalBinaryExpression प्रकार के साथ अभिव्यक्तियों का विश्लेषण करना होगा। इस वर्ग का नाम मैं डीबग घड़ी से लेता हूं। expression.GetType().ToString()"System.Linq.Expressions.LogicalBinaryExpression" के बराबर है। लेकिन मैं इस कक्षा को System.Linq.Expressions नामस्थान में नहीं देख सकता। बिल्कुल नहीं। MethodBinaryExpression कक्षा के साथ एक ही बात।System.Linq.Expressions.LogicalBinaryExpression क्लास के साथ क्या गलत है?

आदेश प्रकार की जांच करने के लिए मैं वास्तव में

  • expression is LogicalBinaryExpression या
  • expression.GetType() = typeof(LogicalBinaryExpression) लेकिन निश्चित रूप से नहीं
  • expression.GetType().ToString() == "System.Linq.Expressions.LogicalBinaryExpression"

लिखने के लिए तो पसंद करते हैं अब मैं सिर्फ राशि त्रुटि

प्रकार या नाम स्थान का नाम 'LogicalBinaryExpression' 'System.Linq.Expressions' (आप एक विधानसभा संदर्भ याद कर रहे हैं?)

यह कैसे संभव नाम स्थान में मौजूद नहीं है?

उत्तर

13

LogicalBinaryExpressioninternal है, इसलिए:

  1. यह प्राप्त करने के लिए अधिक कठिन है एक Type के रूप में, तो आप बस typeof(LogicalBinaryExpression) या x is LogicalBinaryExpression उपयोग नहीं कर सकते है।
  2. आपको इसके बारे में कोई दस्तावेज नहीं मिलेगा।
  3. आपको इसका बिल्कुल उपयोग नहीं करना चाहिए। यह एक कार्यान्वयन विस्तार है जो किसी भी समय बदल सकता है।

आपको या तो BinaryExpression की जांच करनी चाहिए, या अभिव्यक्ति के NodeType की जांच करनी चाहिए।

यह MethodBinaryExpression पर लागू होता है।

संबंधित मुद्दे