将int转换为bool时,通用失败

时间:2011-11-02 16:13:33

标签: c# generics

我在注册表中搜索以下方法(不用担心,这是使用泛型的测试):

private static T GetValue<T>(RegistryKey key, string name)
{
    using (key)
    {
        return (T)key.GetValue(name);
    }
}

但是当使用type:Nullable<bool>时,由于无效的强制转换而失败。 (我只试过数字键)

我想要的是null如果密钥不存在,false如果存在0,或true其他。

我怎样才能做到这一点?

谢谢!

3 个答案:

答案 0 :(得分:2)

因为泛型不能使用特定于类型的行为,所以假定转换为泛型类型参数或来自泛型类型参数的转换。

这次转发失败,你需要转换。

您可以尝试Convert类,但最好使类型参数与注册表类型匹配。

答案 1 :(得分:0)

如果您想要这样的特定行为(null如果nullfalse如果为0,则true,那么如果T不是{,那么您的泛型方法会返回什么? {1}}?

答案 2 :(得分:-3)

也许你可以停止使用魔法演员代码。明确地演绎,所以你总能得到你想要的东西。