0

C# アプリケーションで古い VB ライブラリを使用しようとしています。

このライブラリにはいくつかのクラスがあり、特に 1 つのメソッドはそれ自体のインスタンスを返します。例:Posts post = new Posts().GetLast();

Posts クラスには、実際にはオブジェクト型のプロパティ Comments があります。VB では、Comments プロパティを介して a のように繰り返し処理できますMicrosoft.VisualBasic.Collectionが、C# では、プロパティをキャストして使用することはできません。Microsoft.VisualBasic 名前空間をインポートして Collection に型キャストしようとしましたが、System.__ComObject をライブラリから特定のインターフェイスにキャストする必要があるというエラーが返されて機能しませんでした。

コレクション内には IComments インターフェイスを実装するオブジェクトがあり、インターフェイスのコレクションであるため、インターフェイスにキャストできません。

ICollection (によって実装されるインターフェイス Microsoft.VisualBasic.Collection) へのキャストも試みましたが、肯定的な結果は得られませんでした。

この問題を解決する方法についてのアイデアはありますが、この問題から抜け出す唯一の方法は、C# アプリケーションを VB アプリケーションに変更することです (それほど難しくはありませんが、避けたいことです)。

4

1 に答える 1

0

考えられるすべてのインターフェイスを試し、as演算子を使用し、結果をnullと比較することで、プロパティをIEnumerable(論理的にMicrosoft.VisualBasic.Collection実装ICollectionおよびICollection実装IEnumerable)としてキャストできることがわかりました。

于 2012-04-25T13:39:54.830 に答える