3
我正在做一个配置提供商,在我服务层我有这样的:C#泛型返回值
public string GetValue(string key)
{
return _ctx.Configurations.SingleOrDefault(q => q.Key == key).Value;
}
但我怎么能获取的价值在它的原始类型,我想做到像这样的:
public T GetValue<T>(string key)
{
return (T)(object)_ctx.Configurations.Single(q => q.Key == key).Value;
}
正如此间指出,https://stackoverflow.com/a/9420236/544283,这将是一个滥用仿制药 ...我可以忍受的。
因为我知道类型我可以在方法外抛出值,并将其作为字符串在方法内部处理,但我想避免这种情况。
Value有什么类型?如果Value属性是例如T的基类型,你可以设置T的where约束,然后直接进行转换而不需要对象部分。 – Centro
由于值主要是字符串,int,布尔和日期时间我想我可以使用'where T:IConvertible'来限制它。 – Esteban