1

コンストラクタとデストラクタ、およびメソッド名の要件を持つ c++/cli クラスがあります。c# wcf プログラムでこのメソッドを呼び出す必要があるため、これは c++/cli メソッドを呼び出すために c# wcf コードで行ったことです。

Class1 test= new Class1();
test.requirment();

私の質問は、C# プログラムが参照している c++/cli プログラムをどのように認識しているかということです。この cli dll を c# wcf プログラムへの参照として追加し、名前空間としても使用しました。だから、私がやっていることは正しいかどうかを知りたいし、これを行う他の方法があるかどうか、またはC#プログラムで他の設定を変更する必要があるかどうかも知りたい.

4

3 に答える 3

0

すでに行っているように、少しだけ改善できます。C++/CLI クラスにいくつかのネイティブ リソースが含まれており (通常は C++/CLI を使用する唯一の理由)、C++/CLI の「デストラクタ」つまり~Class1()メソッドを適切に実装している場合:

using (var test1 = new Class1()) {
    test1.requirement();
}

これが機能するのは、各 C++/CLI クラスIDisposableがデフォルトで実装され~Class1()、 の実装にマップされるためですDispose

于 2012-05-18T17:06:04.987 に答える
0

これは、プロジェクト参照によって定義されます (プロジェクトを右クリック -> [参照の追加...])。C++/CLI プロジェクトが同じソリューションにある場合は、[プロジェクト] タブの下に追加する必要があります。それ以外の場合は、[参照] を選択し、ファイル システム上の C++/CLI アセンブリを選択します。

この点で、C++/CLI プロジェクトとアセンブリは、他の .NET プロジェクトまたはアセンブリと何ら変わりはありません。

コード内の識別子 "Class1" が正しい型を参照していることを確認するには、[定義へ移動] を使用すると、型が定義されている場所が表示されます。あいまいさや参照の欠落がある場合、コードはコンパイルされません。

于 2012-05-18T16:10:32.620 に答える
0

私の意見では、あなたがしていることは正しいので、他に何もする必要はありません。Class1 が C++/CLI アセンブリ (public ref class Class1) でマネージ クラスとして宣言されていることを確認してください。

WPF コードを含むアセンブリへの参照として C++/CLI アセンブリを追加し、using 句に名前空間を追加したため、ランタイムとコンパイラは問題を解決するのに十分な情報を持っています。

于 2012-05-18T16:11:31.990 に答える