2011-12-28 14 views
6

वहाँ पोर्टेबल क्लास लाइब्रेरी MethodBase.GetCurrentMethod के बराबर है?पोर्टेबल क्लास लाइब्रेरी मेथडबेस के बराबर। GetCurrentMethod

मैं पीसीएल के लिए नया हूं। मैं सिर्फ यह देख रहा हूं कि मैं कुछ क्लाइंट कोड रखने के लिए पीसीएल का उपयोग कर सकता हूं जिसका निश्चित रूप से सिल्वरलाइट पर उपयोग किया जाएगा और कहीं और इस्तेमाल किया जा सकता है। स्रोत स्कैन करने के बाद, मैं MethodBase.GetCurrentMethod पर बहुत सी कॉल देख सकता हूं जो पीसीएल में मौजूद नहीं प्रतीत होता है।

** संपादित करें **

मैं प्रश्न में पुस्तकालय से बाहर इस नमूने फट गए हैं। IsNullOrEmpty() String.IsNullOrWhiteSpace (स्ट्रिंग) का उपयोग कर रहा था जो कि प्रतीत नहीं होता है, ताकि बिट एक झगड़ा हो।

using System; 
using System.Linq; 
using System.Reflection; 
using System.Linq.Expressions; 

namespace LinqToLdap.PCL 
{ 
    public static class QueryableExtensions 
    { 
     internal static bool IsNullOrEmpty(this String str) 
     { 
      return string.IsNullOrEmpty(str); 
     } 

     public static IQueryable<TSource> FilterWith<TSource>(this IQueryable<TSource> source, string filter) 
     { 
      if (source == null) throw new ArgumentNullException("source"); 

      if (filter.IsNullOrEmpty()) throw new Exception("Filters cannot be null, empty, or white-space."); 

      if (!filter.StartsWith("(")) 
      { 
       filter = "(" + filter + ")"; 
      } 

      return source.Provider.CreateQuery<TSource>(
       Expression.Call(
        null, 
        ((MethodInfo)MethodBase.GetCurrentMethod()) 
         .MakeGenericMethod(new[] { typeof(TSource) }), 
        new[] { source.Expression, Expression.Constant(filter) } 
        ) 
       ); 
     } 
    } 
} 
+0

पीसीएल की आवश्यकता वाले डिवाइस गर्मियों 2013 तक दिखाई नहीं देंगे। शायद उन तरीकों को छोड़ने के लिए पर्याप्त समय नहीं है जो समर्थित नहीं हैं? GetCurrentMethod() निश्चित रूप से एक महत्वपूर्ण चूक नहीं होना चाहिए। –

उत्तर

1

(मैं खुद 'माइक्रोसॉफ्ट पर पोर्टेबल लाइब्रेरी परियोजना)

हम पीसीएल में यह संपर्क में न आएं, क्योंकि यह मेट्रो क्षुधा के लिए Windows 8 .NET में समर्थित नहीं है। इस विधि का आपका उपयोग क्या है?

+0

मैंने नमूना शामिल करने के लिए मूल प्रश्न अपडेट किया है। मूल पुस्तकालय में कई समान एक्सटेंशन विधियां हैं। – ssg31415926

+1

हाय डेविड ... मैं डीबग लॉगिंग में जोड़ने के लिए GetCurrentMethod का उपयोग कर देख रहा था, सी _ _FUNCTION_ _ मैक्रो की तरह। क्या पीसीएल .NET में इसे हासिल करने का कोई और तरीका है? – GrahamW

+4

यह एक बमर है कि यह विधि गुम है। साझा लाइब्रेरी में इनपुट लॉगिंग के लिए यह एक महत्वपूर्ण था। वर्तमान विधि को जानना आपको यह सुनिश्चित करने की अनुमति देता है कि आपका लॉगिंग कोड सभी इनपुट पैरामीटर लॉगिंग कर रहा है। विधि हस्ताक्षर बदलते समय बहुत महत्वपूर्ण है। – Daniel

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