Исключение общего приведения C #

Я столкнулся со странной проблемой приведения типов при использовании дженериков. Следующий код вызовет исключение InvalidCastException , хотя очевидно, что int можно привести к double . Может ли кто-нибудь объяснить это поведение и как его обойти?

public class TestClass<T>
{
    public T Cast(object o)
    {
        return (T)o;
    }
}

public void Main()
{
    TestClass<double> w = new TestClass<double>();
    double x = w.Cast(10);
}

Изменить:

Так как я в любом случае нахожусь в зоне .net 4.0, я изменил его на использование «динамического» вместо «объекта», и все работает, как ожидалось. Цените все точные и быстрые ответы.

6
задан Andrew Hanlon 16 March 2011 в 12:55
поделиться