की तुलना में अधिक संदर्भ की आवश्यकता है मैं मैं क्या HelperAssembly फोन करेगा में एक विस्तार विधि है कि इस के समान दिखता है:एक विधि कॉलिंग के रूप में एक एक्सटेंशन विधि यह सीधे बुला
public static class HelperClass
{
public static void MyHelperMethod(this SomeClass some, OtherClass other)
{
// This object is defined in OtherAssembly1
ObjectFromOtherAssembly1 object1 = new ObjectFromOtherAssembly1(some);
// This object is defined in OtherAssembly2
ObjectFromOtherAssembly2 object2 = new ObjectFromOtherAssembly2(other);
DoStuffWith(object1, object2);
}
}
मैं एक विधानसभा मैं फोन होगा कॉलरएस्क्रिप्ट्स जिसमें HelperAssembly का संदर्भ है।
मेरे HelperAssembly दोनों OtherAssembly1 और OtherAssembly2 के लिए एक संदर्भ है।
कुछ क्लास और अन्य क्लास दोनों को संदर्भ एस्सेप्लोर में परिभाषित किया गया है। HelperAssembly और कॉलरएस्क्रिप्ट्स का संदर्भ संदर्भ एस्सेप्लोर का संदर्भ है।
सब कुछ महान जब मैं CallerAssemblyसे मेरी विधि कॉल इस तरह है:
HelperClass.MyHelperMethod(some, other);
हालांकि, मैं जब मैं इस तरह इसे कहते (एक विस्तार पद्धति के रूप में) त्रुटियों का निर्माण मिलती है:
some.MyHelperMethod(other);
त्रुटियों का कहना है कि कॉलरएस्क्रिप्ट्स को संदर्भित करने की आवश्यकता है अन्यAssembly1 और अन्य एएसएस embly2।
मैं उलझन में हूं। मैंने सोचा कि विस्तार विधि वाक्यविन्यास सिर्फ वाक्य रचनात्मक चीनी था, लेकिन वास्तव में चीजों को संकलित करने के तरीके को वास्तव में नहीं बदला था।
मैं उन संदर्भों को जोड़ना नहीं चाहता हूं जो यह सुझाव दे रहे हैं इसलिए मैं कॉल को एक्सटेंशन विधि के रूप में नहीं बनाऊंगा। लेकिन मैं समझना चाहता हूं कि अंतर क्या है।
विधि को कॉल करना सीधे ठीक क्यों बनाता है लेकिन इसे एक्सटेंशन विधि के रूप में कॉल करने में विफल रहता है?
शायद आपके विवरण से कुछ याद आ रही है, क्योंकि अगर मैं इसका पालन करता हूं तो मुझे कोई त्रुटि नहीं मिलती है। – muratgu
वही है, यह हेल्पर जैसी विधि को कॉल करते समय ठीक है और जब मैं इसे एक्सटेंशन विधि की तरह कॉल करता हूं। क्या आप अतिरिक्त जानकारी प्रदान कर सकते हैं? यह एक दिलचस्प त्रुटि है। – lontivero