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