Заданное приведение является недопустимым - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. есть функция
 public T GetObject<T>(string key1, string key2)
        {
            T result = default(T);
 
            foreach (ModuleConfig z in configuration.ModuleConfigs.Where(p=>p.ModuleName==key1))
            {
                foreach (ObjectConfig p in z.ModuleValues.Where(p=>p.Name==key2))
                {
                    result = (T)p.Value;
                }
            }
 
            return result;
        }
где
 public class Configuration
    {
        public List<ModuleConfig> ModuleConfigs { get; set; }
 
        public Configuration() { }
 
        public Configuration(bool f = true)
        {
            ModuleConfigs = new List<ModuleConfig>();
        }
 
        public Configuration(List<ModuleConfig> moduleConfigs)
        {
            ModuleConfigs = moduleConfigs;
        }
    }
 
    public class ModuleConfig
    {
        public string ModuleName { get; set; }
 
        public List<ObjectConfig> ModuleValues { get; set; }
 
        public ModuleConfig() { }
 
        public ModuleConfig(bool f = true)
        {
            ModuleName = "";
            ModuleValues = new List<ObjectConfig>();
        }
 
        public ModuleConfig(string name, List<ObjectConfig> moduleValues)
        {
            ModuleName = name;
            ModuleValues = moduleValues;
        }
    }
 
    public class ObjectConfig
    {
        public string Name { get; set; }
 
        public object Value { get; set; }
 
        public ObjectConfig()
        { }
 
        public ObjectConfig(string name, object value)
        {
            Name = name;
            Value = value;
        }
    }
В этой функции видно, что по первому ключу он определяет какой лист из configutaion.ModuleConfigs взять, а по второму ключу какой объект вытянуть из листа в configutaion.ModuleConfigs[?].ModuleValues. Так вот когда возвращаемый объект относиться к string, int, enum то все в порядке, а вот когда возвращаемый объект имеет тип bool то мне выдает ошибку "Заданное приведение является недопустимым". В чем может быть проблема?

Решение задачи: «Заданное приведение является недопустимым»

textual
Листинг программы
bool res = Convert.ToBoolean(con.GetObject<string>(key1, key2)));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы