2013-08-02 13 views
15

में स्टेटिक विधि कॉल करने के लिए मैं तीसरे पक्ष DLL (ग # में लिखा है)powershell

एक वर्ग DBConnection और स्थैतिक विधि Connect कहा जाता है जब मैं नीचे कहीं भी होगी की तरह मेरे सी # कंसोल अनुप्रयोग से कि विधि कॉल कहा जाता है कि बढ़िया कार्य करना।

DataPackage.Db.DBConnection.Connect() 

अगला मैंने शक्तियों का उपयोग करके वही काम करने की कोशिश की।

[DataPackage.Db.DBConnection]::Connect() 

लेकिन है कि मुझे त्रुटि

Exception calling "Connect" with "0" argument(s): "Object reference not set to an instance of an object." 

इस और कैसे इसे ठीक करने का क्या कारण है देता है ??

+1

यह हमें बताने के लिए क्या तृतीय पक्ष पुस्तकालय है और वर्ग/विधि पर किसी भी प्रलेखन के लिए हमें बताएं कि सहायक हो सकता है। – jpmc26

+0

इस तथ्य को इंगित करता है कि कनेक्ट() को क्लास के उदाहरण से कॉल करने की आवश्यकता है, इसलिए एक साधारण x = new-object [DataPackage.Db.DBConnection] या इसी तरह x.connect() इसके बाद इसे हल करेगा । :) – GMasucci

उत्तर

1

यह PowerShell प्रति से कोई समस्या नहीं है क्योंकि आपकी विधि कॉल वास्तव में सही है। स्पष्ट रूप से यह तरीका कहीं भी null को हटाना चाहता है। शायद अन्य तरीकों को पहले कहा जाना चाहिए, या शायद एक स्थैतिक संपत्ति कहीं भी सेट हो।

+0

क्या इसे ठीक करने का कोई तरीका है या यह निर्धारित करना है कि वास्तविक कारण क्या है। – Sonali

+0

कोड में देख रहे हैं, मुझे लगता है, यानी इसे अलग करना। मैं अभी भी टीआई को इस तरह से सोचने की कोशिश कर रहा हूं कि यह स्पष्ट रूप से सी # में क्यों नहीं ट्रिगर किया जाएगा – Joey

13

मुझे व्यक्तिगत अनुभव से परे किसी संदर्भ के बिना उत्तर छोड़ने से नफरत है, लेकिन मुझे इस व्यवहार के लिए कभी स्पष्टीकरण नहीं मिला है, इसलिए खेद है कि यह अधिक जानकारीपूर्ण नहीं है।

पैरामीटर रहित विधि को कॉल करते समय माता-पिता को छोड़ दें। तो अपने उदाहरण के लिए कार्य करें:

[DataPackage.Db.DBConnection]::Connect 
बजाय

... कनेक्ट()