我正在做一个配置提供程序,在我的服务层我有这个:
public string GetValue(string key)
{
return _ctx.Configurations.SingleOrDefault(q => q.Key == key).Value;
}
Run Code Online (Sandbox Code Playgroud)
但是我怎么能得到它的原始类型的值,我想这样做:
public T GetValue<T>(string key)
{
return (T)(object)_ctx.Configurations.Single(q => q.Key == key).Value;
}
Run Code Online (Sandbox Code Playgroud)
正如在此指出的那样:https://stackoverflow.com/a/9420236/544283,这将是滥用泛型 ......我可以忍受.
因为我知道类型我可以在方法之外转换值,并将方法作为字符串处理,但我想避免这种情况.
只要您确定演员阵容不会失败,您可以使用:
var value = _ctx.Configurations.Single(q => q.Key == key).Value;
return (T)Convert.ChangeType(value, typeof(T));
Run Code Online (Sandbox Code Playgroud)
如果您想要安全,您应该进行一些额外的检查,以确保该值实际上可以转换为所需的类型.
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |