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