2011-12-28 5 views
5

द्वारा समर्थित नहीं है I C#+/CLI लाइब्रेरी को C# में उपयोग के लिए विकसित करने का प्रयास कर रहा हूं और मुझे निम्न समस्या है। अगर हम अपने प्रबंधित संदर्भ वर्ग लेने के होने के लिए इस प्रकार है:सी ++/सीएलआई कक्षा पुस्तकालय में तर्क के रूप में मेरा स्वयं का प्रबंधित प्रकार: CS0570: भाषा

namespace Library 
{ 
using namespace System; 

public ref class Test 
{ 
internal: 
    String^ internalString; 
public: 
    Test() 
    { 
     internalString = gcnew String("Hey There"); 
    } 
    ~Test() 
    { 

    } 
}; 

public ref class TestImplement 
{ 
public: 
    static String^ TestMessage(Test test) 
    { 
     return test.internalString; 
    } 
}; 
} 

और मेरी सी # कार्यान्वयन इस प्रकार है:

प्रणाली का उपयोग करते हुए;

त्रुटि CS0570:

namespace AddProgram 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Library.Test test = new Library.Test(); 
     Console.WriteLine(Library.TestImplement.TestMessage(test)); 
     Console.Read(); 
    } 
} 
} 

मैं निम्नलिखित त्रुटि मिलती है 'TestMessage' भाषा द्वारा समर्थित नहीं है

जहाँ तक मुझे इस बता सकते हैं के रूप में प्रकार के रूप में Library.Test गुजर की वजह से है एक विवाद। मुझे समझ में नहीं आता कि मुझे यह संदेश क्यों मिल रहा है, और मुझे आशा है कि मेरे संदर्भ पुस्तकालय से प्रकारों को पार करना संभव है।

किसी भी मदद

+0

सी ++/सीएलआई में अपने टोपी और विनाशकों को याद रखें। –

उत्तर

13

आप एक Library.Test, जो कैरेट (^) की तरह आप स्ट्रिंग के लिए किया था^उपयोग करने का अर्थ करने के लिए एक संदर्भ लेने के रूप में TestMessage घोषित करने के लिए की जरूरत की सराहना की जाएगी। सी ++/सीएलआई आपको कैरेट छोड़कर मूल्य प्रकार अर्थशास्त्र (सॉर्ट) का उपयोग करके संदर्भ प्रकारों को संभालने की अनुमति देता है, लेकिन सी # में कोई समतुल्य सुविधा नहीं है, यही कारण है कि आपको वह त्रुटि मिल रही है।

+0

मुझे एक ही समस्या थी क्योंकि मेरी विधि हस्ताक्षर 'MyMethod (सिस्टम :: संग्रह :: जेनेरिक :: सूची <सिस्टम :: स्ट्रिंग ^> myArgs) था, यानी मैं सूची को एक संदर्भ के साथ-साथ सामान्य तर्क बनाने के लिए भूल गया था । – Steztric

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