我在注册表中搜索以下方法(不用担心,这是使用泛型的测试):
private static T GetValue<T>(RegistryKey key, string name)
{
using (key)
{
return (T)key.GetValue(name);
}
}
但是当使用type:Nullable<bool>
时,由于无效的强制转换而失败。
(我只试过数字键)
我想要的是null
如果密钥不存在,false
如果存在0,或true
其他。
我怎样才能做到这一点?
谢谢!
答案 0 :(得分:2)
因为泛型不能使用特定于类型的行为,所以假定转换为泛型类型参数或来自泛型类型参数的转换。
这次转发失败,你需要转换。
您可以尝试Convert
类,但最好使类型参数与注册表类型匹配。
答案 1 :(得分:0)
如果您想要这样的特定行为(null
如果null
,false
如果为0,则true
,那么如果T不是{,那么您的泛型方法会返回什么? {1}}?
答案 2 :(得分:-3)
也许你可以停止使用魔法演员代码。明确地演绎,所以你总能得到你想要的东西。