具有通用接口的Bridge方法,用于许多重载方法

时间:2014-07-17 09:08:54

标签: c# .net generics casting

在我的代码中,我正在从一种类型的层次结构转换为另一种类型。我有一组重载方法:

Type1 ToInternalObject(OtherType1 obj);
Type2 ToInternalObject(OtherType2 obj);
//etc.

为了更容易使用这些方法,我想创建一个通用接口:T ToInternalObject<T>(BaseOtherType obj),但当类型为double时,我已经陷入了这种情况:

    public static T ToInternalObject<T>(object obj)
    {
        if (typeof (T) == typeof (double))
        {
            return (T) 5.0;
        }
        throw new Exception("Type is not handled yet");
    }

编译错误是:Error 140 Cannot convert type 'double' to 'T'。我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

双播应该有效:

return (T) (object) 5.0;