此代码生成编译器错误,该错误已使用相同的参数类型定义成员。
private T GetProperty<T>(Func<Settings, T> GetFunc) where T:class
{
try
{
return GetFunc(Properties.Settings.Default);
}
catch (Exception exception)
{
SettingReadException(this,exception);
return null;
}
}
private TNullable? GetProperty<TNullable>(Func<Settings, TNullable> GetFunc) where TNullable : struct
{
try
{
return GetFunc(Properties.Settings.Default);
}
catch (Exception ex)
{
SettingReadException(this, ex);
return new Nullable<TNullable>();
}
}
有干净的工作吗?
答案 0 :(得分:3)
通用类型约束不能用于重载解析,但实际上您不需要重载方法。只需使用default
代替null
:
private T GetProperty<T>(Func<Settings, T> GetFunc)
{
try
{
return GetFunc(Properties.Settings.Default);
}
catch (Exception exception)
{
SettingReadException(this,exception);
return default(T);
}
}
哦,我已经逐字复制了你的代码,但请不要像这样吞下一般的Exception
。捕获您实际可能会抛出的特定异常。您不希望此代码无意中吞噬OutOfMemoryException
或BadImageFormatException
个实例。