1

ストレージ用にさまざまなタイプのオブジェクトを受け入れるメソッドがあります。

public void Store<T>(T item)
{
    // works fine
    if (item is Foo)
    {
      // ...
    }
    // works fine
    else if (item is Observation<ImageSignal>)
    {
      // ...
    }

    // isn't detected
    else if (item is Observation<Signal<ISpectrum>>)
    {
      // ...
    }

    else 
    {
      // Observation<Signal<ISpectrum>> always hits this.
      throw new NotSupportedException();
    }
}

これを検出する方法を誰か教えてもらえますか?

編集: 私は実際にこのオブジェクトをラップするオブジェクトを渡していました。エリックは正しかった。問題が解決しました。しかし、迅速な対応に感謝します。

4

2 に答える 2

5

Storeこの場合、関数をオーバーロードしたほうがよいのではないでしょうか? ロジックに従う方がはるかに簡単です。

public void Store(Foo item)
{
}

public void Store(Observation<ImageSignal> item)
{
}

public void Store(Observation<Signal<ISpectrum>> item)
{
}
于 2012-06-04T14:47:19.113 に答える
0

typeof(T)またはitem.GetType()。h番目

于 2012-06-04T14:45:28.080 に答える