(This may be a dupe, I can't imagine someone hasn't already asked this, I probably haven't worked out the keywords I need)
I have an interface for a creaky property-map:
interface IPropertyMap
{
bool Exists(string key);
int GetInt(string key);
string GetString(string key);
//etc..
}
I want to create an extension method like so:
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..
}
}
But the compiler won't let me cast to T. I tried adding where T : struct
but that doesn't seem to help.
What am I missing?