我有
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>
它必须充满这种类型的条件代码。我想我应该去阅读该代码
最佳答案
尝试
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.
}
关于c# - 在通用函数中键入特定行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37447670/