मैं सी #+/सीएलआई में सी # से लिखी गई विधि को कॉल करने का प्रयास कर रहा हूं। सी ++/सीएलआई कोड का उपयोग ओरेकल डेटाबेस में TIMESTAMP
कॉलम को अपडेट करने के लिए किया जाता है, रिकॉर्ड आईडी और System::DateTime
ऑब्जेक्ट दिया जाता है जो ओरेकल के TIMESTAMP
प्रकार के लिए .NET संगत डेटा प्रकार है।सिस्टम के साथ कॉलिंग सी ++/सीएलआई विधि :: डेटटाइम पैरामीटर को पैरामीटर के रूप में 'ValueType' की आवश्यकता होती है?
विधि मैं बोल रहा हूँ निम्नलिखित प्रोटोटाइप है:
bool ChangeJobUpdateDate (int jobIdIn, System::DateTime^ updateDateIn)
मैं एक परीक्षण परियोजना है कि मैं बनाया में इस DLL परियोजना के लिए एक संदर्भ जोड़ दिया है; मैं सी # में परीक्षण लिख रहा हूँ। हालांकि, जब मैं सी # इकाई परीक्षण परियोजना से इस विधि कॉल करने का प्रयास करें, समारोह के लिए निम्न विधि घोषणा (IntelliSense के माध्यम से) के लिए प्रकट होता है:
bool ChangeJobUpdateDate (int jobIdIn, ValueType updateDateIn)
मैं बेशक कि C++/CLI से परिचित नहीं हूँ, इसलिए क्या मुझे कुछ याद आ रही है?
वह था! ऐसा लगता है कि मुझे इन ^% और * आईएनजी प्रतीकों के अर्थ पर कुछ और समय पढ़ने की आवश्यकता होगी। धन्यवाद! :) –
यह बहुत अधिक है। सी ++/सीएलआई वास्तव में हस्ताक्षर में वास्तविक प्रकार के मूल्य को एन्कोड करता है - इस मामले में, आईएल में, पूरा प्रकार होगा: 'वर्ग [mscorlib] सिस्टम। वैल्यू टाइप मोडोपेट ([mscorlib] सिस्टम। डेटटाइम) modopt ([mscorlib ] System.Runtime.CompilerServices.IsBoxed) '- सी ++/सीएलआई कंपाइलर बाद में सही प्रकार जानता है और उचित टाइपकेकिंग करेगा - लेकिन सी # बस सभी 'मोडोपेट' को अनदेखा करता है और इसे सादे 'वैल्यू टाइप' के रूप में मानता है। –
@ पावेल: विस्तार के लिए धन्यवाद। मैं वास्तव में सिर्फ एक शिक्षित अनुमान बना रहा था। मेरे जवाब में इस भलाई को संपादित करने के लिए स्वतंत्र महसूस करें - या अपना खुद का जोड़ें :) –