2010-05-31 8 views
9

मैं सी #+/सीएलआई में सी # से लिखी गई विधि को कॉल करने का प्रयास कर रहा हूं। सी ++/सीएलआई कोड का उपयोग ओरेकल डेटाबेस में TIMESTAMP कॉलम को अपडेट करने के लिए किया जाता है, रिकॉर्ड आईडी और System::DateTime ऑब्जेक्ट दिया जाता है जो ओरेकल के TIMESTAMP प्रकार के लिए .NET संगत डेटा प्रकार है।सिस्टम के साथ कॉलिंग सी ++/सीएलआई विधि :: डेटटाइम पैरामीटर को पैरामीटर के रूप में 'ValueType' की आवश्यकता होती है?

विधि मैं बोल रहा हूँ निम्नलिखित प्रोटोटाइप है:

bool ChangeJobUpdateDate (int jobIdIn, System::DateTime^ updateDateIn) 

मैं एक परीक्षण परियोजना है कि मैं बनाया में इस DLL परियोजना के लिए एक संदर्भ जोड़ दिया है; मैं सी # में परीक्षण लिख रहा हूँ। हालांकि, जब मैं सी # इकाई परीक्षण परियोजना से इस विधि कॉल करने का प्रयास करें, समारोह के लिए निम्न विधि घोषणा (IntelliSense के माध्यम से) के लिए प्रकट होता है:

bool ChangeJobUpdateDate (int jobIdIn, ValueType updateDateIn) 

मैं बेशक कि C++/CLI से परिचित नहीं हूँ, इसलिए क्या मुझे कुछ याद आ रही है?

उत्तर

11

मुझे संदेह है क्योंकि आप DateTime के बजाय DateTime^ का उपयोग कर रहे हैं। यह एक मूल्य प्रकार है, तो आप संदर्भ का उपयोग करने का प्रयास क्यों कर रहे हैं?

सी # एक मूल्य के प्रकार के साथ जुड़े बॉक्स्ड संदर्भ प्रकार का प्रतिनिधित्व करने के लिए किसी भी तरह नहीं है, तो सबसे अच्छा यह कर सकते हैं ValueType है - मैं संदिग्ध है कि क्या हो रहा है, हालांकि मुझे यकीन है कि के लिए नहीं कह सकता की वजह से सी ++ के साथ अनुभव की कमी। बस DateTime आज़माएं और देखें कि यह कैसा दिखता है ...

+1

वह था! ऐसा लगता है कि मुझे इन ^% और * आईएनजी प्रतीकों के अर्थ पर कुछ और समय पढ़ने की आवश्यकता होगी। धन्यवाद! :) –

+3

यह बहुत अधिक है। सी ++/सीएलआई वास्तव में हस्ताक्षर में वास्तविक प्रकार के मूल्य को एन्कोड करता है - इस मामले में, आईएल में, पूरा प्रकार होगा: 'वर्ग [mscorlib] सिस्टम। वैल्यू टाइप मोडोपेट ([mscorlib] सिस्टम। डेटटाइम) modopt ([mscorlib ] System.Runtime.CompilerServices.IsBoxed) '- सी ++/सीएलआई कंपाइलर बाद में सही प्रकार जानता है और उचित टाइपकेकिंग करेगा - लेकिन सी # बस सभी 'मोडोपेट' को अनदेखा करता है और इसे सादे 'वैल्यू टाइप' के रूप में मानता है। –

+0

@ पावेल: विस्तार के लिए धन्यवाद। मैं वास्तव में सिर्फ एक शिक्षित अनुमान बना रहा था। मेरे जवाब में इस भलाई को संपादित करने के लिए स्वतंत्र महसूस करें - या अपना खुद का जोड़ें :) –

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

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