Ошибка Cannot Cast

160
23 февраля 2019, 19:50

internal static T Get < T > (string key) where T: new() {
    if (Configs.ContainsKey(key)) {
        return (T) Config.Configs[key];
    }
    return new T();
}
public static Dictionary < string, object > Configs;
var te = Get < List < string >> ("Шляпа");
public static ConfigFile Default() {
    Configs = new Dictionary < string, object > {
        {
            "Шляпа",
            new List < string > () {
                "Test1",
                "Test2",
                "Test3"
            }
        }
    };
    return this;
}

Configs сериализуется в json file.Но Если при считывание получаю ошибку!В чем я ошибся?

Answer 1

Решение ошибки!

internal static T Get < T > (string key) {
    if (Configs.ContainsKey(key)) {
        if (Configs[key].GetType() == typeof(JArray)) {
            Configs[key] = ((JArray) Configs[key]).ToObject(typeof(T));
        }
        if (Configs[key].GetType() == typeof(JObject)) {
            Configs[key] = ((JObject) Configs[key]).ToObject(typeof(T));
        }
        return (T) Config.Configs[key];
    }
    return default (T);
}
READ ALSO
Не обновляются данные в DataGridView в real-time

Не обновляются данные в DataGridView в real-time

В продолжении к вопросу

168
C# WPF не работает template button, которая в template window

C# WPF не работает template button, которая в template window

Есть окно с кастомным стилем и в стиле кнопка MinimizeButton с кастомным Template, который изменяет ее Background на extensions:ButtonExtensionHighlightedBackground когда IsMouseOver...

141
Рекурсия с шагом N+1 и N+3

Рекурсия с шагом N+1 и N+3

Требуется с помощью рекурсии определить можно ли из массива 1N, в котором лежать целые неотрицательные числа, получить сумму K, если можно...

162
Чтение данных из COM порта C# .Net

Чтение данных из COM порта C# .Net

Написал программу на микроконтроллере которая в порт посылает данные(4 константных значения типа int) через функцию sprintf, sprintf переводит интовое...

147