我有
T? Get(string key) where T : struct {}
我想为特定类型提供特定行为。我希望能做两件事之一。首先添加一个新功能
T? Get(string key) where T : DateTimeOffset {}
这不起作用,语法完全无效。所以另一个选择是在函数中添加条件逻辑,如下所示:
if(typeof(T) == typeof(DateTimeOffset))
{
return DateTimeOffset.Parse(massaged);
}
这不起作用,因为我最终试图返回一般不是T的东西,即DateTimeOffset。
我知道我可以添加一个不同的方法GetDateTimeOffset
,但我正在尝试创建一个统一的界面。
任何想法?
我知道它必须是可行的 - 想象一下newtonsoft里面的代码(真的很棒)JsonConvert.DeserializeObject<T>
它必须用这种类型的条件代码塞满。我想我应该去读那段代码
答案 0 :(得分:2)
尝试
public T? Get<T>(string key) where T : struct
{
if (typeof(T) == typeof(DateTimeOffset))
{
var dateTimeOffset = DateTimeOffset.Parse(key); //or what have you
return dateTimeOffset as T?;
}
return null; //etc.
}