Проверка значений элементов класса относительно словаря из другого класса - C#

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

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

Доброго времени суток! Есть класс некого предмета, который содержит булиновский словарь:
Листинг программы
  1. public class SomeObject
  2. {
  3. // кольори
  4. public bool red = false,
  5. orange = false,
  6. yellow = false,
  7. green = false,
  8. blue = false,
  9. violet = false,
  10. black = false,
  11. brown = false,
  12. white = false,
  13. // смак
  14. bitter = false,
  15. sweet = false,
  16. salt = false,
  17. sour = false,
  18. ...
И есть второй клас действий, вложенный в класс объекта, который имеет также свой словарь, с ключовыми словами идентичными первому словарю но уже типа дабл.
Листинг программы
  1. public abstract class PersonActions
  2. {
  3. public Dictionary<string, double> Exp = new Dictionary<string, double>()
  4. {
  5. // кольори
  6. ["red"] = 1,
  7. ["orange"] = 0.8,
  8. ["pink"] = 0.8,
  9. ["yellow"] = 0.8,
  10. ["green"] = 0.8,
  11. ["blue"] = 0.8,
  12. ["violet"] = 0.8,
  13. ["black"] = 0.8,
  14. ["brown"] = 0.8,
  15. ...
  16. public abstract int Execute(SomeObject a);
  17. }
  18. ...
  19. public class Persone : SomeObject
  20. {
  21. public class Eats : PersonActions
  22. {
  23. public override int Execute(SomeObject obj)
  24. {
  25. GlobalVars.ObjectsOnMap.Remove(obj);
  26. return obj.health;
  27. }
  28. }
  29. }
  30. private Eats Eat = new Eats();
  31. ...
Класс объекта имеет метод, который должен вычислить среднее значение элементов словаря класса действий, относительно значений словаря класса предмета и записать это значение в соответствующую переменную в классе действий.
Листинг программы
  1. public void Calculate_Motivation(PersonActions p_actn, SomeObject a)
  2. {
  3. foreach (var field in a.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic))
  4. if (p_actn.Exp.ContainsKey(field.Name) && (bool)(field.GetValue(a)) && GlobalVars.IsBool(a))
  5. {
  6. p_actn.motivation += p_actn.Exp[field.Name];
  7. }
  8. }
Вот здесь у меня и проблемма. Условие (p_actn.Exp.ContainsKey(field.Name) && (bool)(field.GetValue(a)) && GlobalVars.IsBool(a)) не проходит проверку. Помогите написать метод, пожалуйста. З.Ы. Знаю что после условия не вычисляется среднее значение, мне просто надо, пока, чтобы условие выполниолсь.

Решение задачи: «Проверка значений элементов класса относительно словаря из другого класса»

textual
Листинг программы
  1.     public class Person
  2.     {
  3.         //если Subject должен быть глобальным объектом, смотрите паттерн синглтон
  4.         Subject subject = new Subject();
  5.  
  6.         // безпонятия что у вас означало Exp
  7.         Dictionary<SubjectProperties, double> PersonExp = new Dictionary<SubjectProperties, double>()
  8.         {
  9.             [SubjectProperties.Red] = 1,
  10.             [SubjectProperties.Orange] = 0.8
  11.         };
  12.  
  13.         public Person()
  14.         {
  15.  
  16.         }
  17.     }

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


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

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

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы