2011-12-28 10 views
5

C#で使用するためのC++/CLIライブラリを開発しようとしていましたが、次の問題があります。C++/CLIクラスライブラリのargとして私自身の管理型: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; 
    } 
}; 
} 

そして、私のC#実装は次のように:私たちはあることを私の管理参照クラスを取る場合は、次のよう

システムを使用しました。

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

私は次のエラーを取得する:

エラーCS0570:「TestMessageは」私の知る限り、これはとLibrary.Testタイプを渡すためです言うことができるように言語

によってサポートされていません。引数。なぜ私はこのメッセージを受け取っているのか分かりませんし、参照ライブラリから型を渡すことができることを願っています。

すべてのヘルプはあなたが文字列のために行ったように^キャレット(^)を使用することを意味Library.Test、へ参照を取るようTestMessageを宣言する必要が

+0

C++/CLIであなたの帽子とデストラクタを気にしてください。 –

答えて

13

をいただければ幸いです。 C++/CLIでは、値型セマンティクス(ソート)を使用して参照型を扱うことができますが、C#には対応する機能がないため、そのエラーが発生します。

+0

私のメソッドシグネチャが 'MyMethod(System :: Collections :: Generic :: List myArgs)'であったため、同じ問題が発生しました。つまり、リストを参照と同様にジェネリックarg 。 – Steztric

関連する問題