2011-02-09 9 views
6

यदि यह मानकों को स्वीकार करता है और यदि ऐसा है, तो MethodInfo से पूछने का सबसे प्रभावी तरीका क्या है?MethodInfo से पूछने का सबसे प्रभावी तरीका क्या है यह कितने पैरामीटर लेता है?

मेरे वर्तमान समाधान होंगे: methodInfo.GetParameters().Any() और methodInfo.GetParameters().Count()

क्या यह सबसे प्रभावी तरीका है?

चूंकि मुझे वास्तव में ParameterInfo ऑब्जेक्ट्स की आवश्यकता नहीं है, तो GetParameters() पर कॉल किए बिना ऐसा करने का कोई तरीका है?

उत्तर

10

आपके द्वारा सूचीबद्ध दो LINQ के लिए हैं। Any()bool लौटाता है - यह बताते हुए कि कम से कम एक है। Count()IEnumerable<T> पर किसी भी का उपयोग किया जाता है।

Length (संपत्ति) सबसे तेज़ होगा क्योंकि GetParameters()ParameterInfo[] देता है।

ऐसा नहीं लगता है कि MethodInfoGetParameters() के अलावा पैरामीटर की संख्या तक पहुंचने का कोई अन्य तरीका है।

+0

मैं सवाल अद्यतन का उपयोग करें। – smartcaveman

+0

क्या आप MethodImplAttributes से परिचित हैं या क्या आप जानते हैं कि इसका उपयोग यह निर्धारित करने के लिए किया जा सकता है? – smartcaveman

+0

मैं व्यक्तिगत रूप से नहीं हूं। ऐसा लगता है कि यह लागू नहीं होता है। –

5

यदि दक्षता मायने रखती है तो आप परिणाम को Dictionary<MethodInfo,int> में कैश क्यों नहीं करते हैं? इस तरह आपको केवल एक बार प्रतिबिंब का उपयोग करने की आवश्यकता है।

0

आप एक MethodInfo के मापदंडों की गिनती प्राप्त करना चाहते हैं, तो नीचे दिए गए कोड

int intLength = mi.GetParameters().Length; // where mi is a variable of type MethodInfo 
संबंधित मुद्दे