У меня есть интерфейс для скрипичной карты свойств:
interface IPropertyMap
{
bool Exists(string key);
int GetInt(string key);
string GetString(string key);
//etc..
}
Я хочу создать метод расширения следующим образом:
public static T GetOrDefault<T>(this IPropertyMap map, string key, T defaultValue)
{
if (!map.Exists(key))
return defaultValue;
else
{
if (typeof(T) == typeof(int)) return (T)map.GetInt(key);
//etc..
}
}
Но компилятор не даст мне нажать на T. Я попробовал добавить where T : struct
, но это, похоже, не помогает.
Что мне не хватает?