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

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

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

Доброго времени суток. Помогите, пожалуйста советом, так как мой "финт ушами", который я думал получится, не прошел. Есть класс действий персонажа, который имеет метод действия и библиотеку по которой будет вычисляться возможность этого действия.
public abstract class PersonActions
    {
        public Dictionary<string, double> Exp = new Dictionary<string, double>()
        {
            // кольори
            ["red"] = 0.8,
            ["orange"] = 0.8,
            ["pink"] = 0.8,
            ["yellow"] = 0.8,
            ["green"] = 0.8,
            ["blue"] = 0.8,
            ["violet"] = 0.8,
            ["black"] = 0.8,
            ["brown"] = 0.8,
...
        };
        public abstract int Execute(SomeObject a);
    }
Дальше в классе персонажа, я объявлял вложенный клас действий и уже переписывал метод действия под нужное действие.
 public class Persone : SomeObject
    {
        abstract class Eats : PersonActions
        {
            public override int Execute(SomeObject obj)
            {
                GlobalVars.ObjectsOnMap.Remove(obj);
                return obj.health;
            }
        }
...
Мне надо вычислить среднее значение библиотеки каждого действия и занести его в список. Так как действий в будущем прогнозируется не мало, я хотел все действия вручную внести в список и потом специальным методом вычислять среднеи значения их библиотек.
public double Calculate_Motivation (PersonActions a) //підраховуєм мотивацію 
        {    
            double sum = 0;
            int count = 0;
            List<PersonActions> actions_list = new List<PersonActions>(); // список можливих дій
            actions_list.Add(Eats);
Но не получилось. Мне выводит ошибку "Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка CS0119 'Persone.Eats" является тип, который недопустим в данном контексте." Возможно есть другой путь решить мою задачу?

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

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

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


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

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

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