检测泛型中的泛型类型

时间:2012-06-04 14:43:39

标签: c#

我有一个方法可以接受许多不同类型的对象进行存储:

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();
    }
}

谁能告诉我怎么能发现这个?

编辑:我实际上正在传递一个包装此对象的对象。埃里克是对的。问题解决了。但是,感谢您的快速回复。

2 个答案:

答案 0 :(得分:5)

在这种情况下,重载Store函数不是更好吗?遵循逻辑要容易得多。

public void Store(Foo item)
{
}

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

public void Store(Observation<Signal<ISpectrum>> item)
{
}

答案 1 :(得分:0)

typeof(T)item.GetType()。 HTH