2009-08-18 18 views
4

に辞書を<>公開する方法私はこれらの線に沿って何かを定義しているインタフェースを持っています。すべてがコンパイルされ、アセンブリは正常に登録されているようですが、COMオブジェクト(PowerShellなど)を作成しようとするとエラーが発生します。COM相互運用機能

これは、私が使用している汎用の辞書<>クラスに関連しているようです。

  1. は、COM相互運用機能を通じてジェネリックコレクションを公開することも可能です。だからここに質問はありますか?
  2. 「はい」の場合、どのように処理されますか?
  3. いいえの場合、回避策は何ですか?

答えて

5

私はGoogleの検索でここに掲載されましたが、これはあなたから来たと推測していたはずです。

私が知っている限り、ジェネリック医薬品は、標準的なマーシャル団体とCOMを通じてマーシャルすることはできません。私が知っていることは、C#のArrayListがVBScript、VB、JScript 5.xなどで使用できるCOMの「標準」コレクションに変わるということです。しかし、共通の目標に向かって作業しているので、他のいくつかの集約型と何が起こるかを見てください。

2

ジェネリックはCOMで表示することはできませんが、VSはこれについてコンパイル時の警告を表示します。

別の解決策は、辞書をプライベートにし、追加/削除/へ/辞書からアイテムを取得するためのメソッドを公開することができ

public interface ComVisibleFoo 
{ 
    int SomeProperty { get; set; } 

    //Dictionary<string, object> Items; // can't be COM-visible 

    void AddItem(string key, object value); 
    void RemoveItem(string key); 
    object Item(string key); 
} 
関連する問題