.NET(C#)にはstring[][]
を返すメソッドがあります。ネストされた配列を.NETからCOMに公開する
WARNING:含むアセンブリのためのCOMタイプライブラリを作成するには(.NET 2.0 SDKから)します。regasmまたはTlbExpを使用している場合、私は次の警告を受けるネストされた配列のためのマーシャリングのサポートはありません。
この警告は、問題のメソッドが生成されたタイプライブラリにエクスポートされないという結果に終ります。私は、COMの戻り値の型としてVariantを使用し、COMクライアント側で/ etcをキャストする方法があると言われました。この特定のアセンブリでは、ターゲットクライアントの視聴者はVB6です。 しかし、実際に.NET側でこれをどうやってやっていますか?
注:私は戻り値の型がバリアントである(そのエクスポートされたタイプライブラリを持つ)既存のレガシーDLLを持っていますが、このDLL(と.TLB)はpre-.NETレガシーツールを使用して生成されるので、Iそれらを使用することはできません。
アセンブリがVB.NETで書かれている場合は、まったく役に立ちますか?
実際、VB.NETには、C#にはない多くのCOM関連機能があります。関連する2つの例は、 です。1.オプションの関数パラメーターおよび 2.省略された関数パラメーターのデフォルト値。 一般に、VB.NETには、C#にはない、後方互換性のある層(COMを対象とする)があります。それが私の希望でした。 – bzlm
まあ、それらは実際の施設よりもコンパイラの砂糖です。 C#はより冗長に終わるが、それでも同じILを介して動作する。 – Will
私は異なっていると思っていますが、 "VBにはC#が不足している機能はありません"という文章はあまりにも一般的です。たとえば、チェックされた例外はC#AFAIKでは実装できません。したがって、それらを砂糖と呼ぶのは不公平です。 – bzlm