Нужен совет по созданию архитектуры(?) класса - C#
Формулировка задачи:
Доброго времени суток.
Помогите, пожалуйста советом, так как мой "финт ушами", который я думал получится, не прошел.
Есть класс действий персонажа, который имеет метод действия и библиотеку по которой будет вычисляться возможность этого действия.
Дальше в классе персонажа, я объявлял вложенный клас действий и уже переписывал метод действия под нужное действие.
Мне надо вычислить среднее значение библиотеки каждого действия и занести его в список. Так как действий в будущем прогнозируется не мало, я хотел все действия вручную внести в список и потом специальным методом вычислять среднеи значения их библиотек.
Но не получилось. Мне выводит ошибку "Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка CS0119 'Persone.Eats" является тип, который недопустим в данном контексте."
Возможно есть другой путь решить мою задачу?
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);Решение задачи: «Нужен совет по созданию архитектуры(?) класса»
textual
Листинг программы
public class Eats : PersonActions // abstract здесь не нужен
{
public override int Execute(SomeObject obj)
{
GlobalVars.ObjectsOnMap.Remove(obj);
return obj.health;
}
}