2

MyDict<Type, BlockingCollection<"differentTypes">キャストを回避するインターフェイスを介してディクショナリをセットアップして、オブジェクトまたは動的タイプの使用を防ぐことはできますか?

私がそのようなものを使用したい理由は、実行時にさまざまなタイプのブロッキング コレクションを初期化したいからです。着信オブジェクトはさまざまなタイプであり、そのような着信オブジェクトをタイプに一致するブロッキング コレクションに追加したいからです。また、後でキャストせずに BlockingCollection 内のオブジェクトにアクセスしたいと考えています。Blocking コレクションの必要な型は、ラッピング クラスのインスタンス化時に認識されます。着信オブジェクトのタイプは、実行時にのみ認識されます。着信オブジェクト タイプは、クラスのインスタンス化時に認識されているタイプと異なることはありません。一致する BlockingCollection から取得するオブジェクトの型も、実行時にのみわかります。キャストせずにこれを設定する方法はありますか?

関連する多くの質問を閲覧しましたが、ここに記載されている仕様とまったく同じものは見つかりませんでした。

4

1 に答える 1

1

最終的に、「differentTypes」はobject、または共通の基本クラス/インターフェースのいずれかを意味します。これらの型が値型の場合は、ボックス化およびボックス化解除する必要があります (ただし、これらはクラス オブジェクトであることを示しているため、これは適用されませんstruct。ボックス化/ボックス化解除されるのは s のみです)。それで、いくつかのキャストが残ります-キャストはかなり高速です:私はその影響についてあまり心配しません.

もちろん、「differentTypes」の間に何らかの共通点がある場合 (いくつかの共通インターフェースなど)、キャストせずにその共通インターフェースを使用できる可能性があります。

于 2012-05-01T05:12:07.117 に答える