VS 2010 .NET 3.5
Что неправильно?
private T GetKeyValue<T>(string key, T defaultValue)
{
object value = defaultValue;
var subKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\MySoft\Test1\");
if (subKey != null)
{
value = subKey.GetValue(key);
subKey.Close();
}
var converter = TypeDescriptor.GetConverter(typeof(T));
return (T)converter.ConvertFrom(value);
}
Если ключ в реестре существует, то всё работает замечательно, для типов string и bool. А вот если subKey = NULL, то string работает, а вот с bool проблемы:
GetKeyValue<bool>("Val1", false);
выбрасывает исключение при конвертировании (используется defaultValue):
converter.ConvertFrom(value);
Тест для Т = bool:
var buf = converter.CanConvertFrom(typeof(T));
тоже не проходит.