Нужен совет по созданию архитектуры(?) класса - C#

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

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

Доброго времени суток. Помогите, пожалуйста советом, так как мой "финт ушами", который я думал получится, не прошел. Есть класс действий персонажа, который имеет метод действия и библиотеку по которой будет вычисляться возможность этого действия.
Листинг программы
  1. public abstract class PersonActions
  2. {
  3. public Dictionary<string, double> Exp = new Dictionary<string, double>()
  4. {
  5. // кольори
  6. ["red"] = 0.8,
  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. };
  17. public abstract int Execute(SomeObject a);
  18. }
Дальше в классе персонажа, я объявлял вложенный клас действий и уже переписывал метод действия под нужное действие.
Листинг программы
  1. public class Persone : SomeObject
  2. {
  3. abstract class Eats : PersonActions
  4. {
  5. public override int Execute(SomeObject obj)
  6. {
  7. GlobalVars.ObjectsOnMap.Remove(obj);
  8. return obj.health;
  9. }
  10. }
  11. ...
Мне надо вычислить среднее значение библиотеки каждого действия и занести его в список. Так как действий в будущем прогнозируется не мало, я хотел все действия вручную внести в список и потом специальным методом вычислять среднеи значения их библиотек.
Листинг программы
  1. public double Calculate_Motivation (PersonActions a) //підраховуєм мотивацію
  2. {
  3. double sum = 0;
  4. int count = 0;
  5. List<PersonActions> actions_list = new List<PersonActions>(); // список можливих дій
  6. actions_list.Add(Eats);
Но не получилось. Мне выводит ошибку "Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка CS0119 'Persone.Eats" является тип, который недопустим в данном контексте." Возможно есть другой путь решить мою задачу?

Решение задачи: «Нужен совет по созданию архитектуры(?) класса»

textual
Листинг программы
  1. public class Eats : PersonActions                    //  abstract здесь не нужен
  2.  {
  3.      public override int Execute(SomeObject obj)
  4.      {
  5.          GlobalVars.ObjectsOnMap.Remove(obj);
  6.          return obj.health;
  7.      }
  8.  }

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


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

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

8   голосов , оценка 3.625 из 5

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

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

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