Так, например, список, содержащий 5 Action<T>
s A, B, C, D и E, где B вызывает A или C в некоторой точке в своем собственном «действии».
Очевидно, я мог бы сделатьчто-то вроде этого (пожалуйста, не отвлекайтесь на бесполезность этого примера):
public static List<Action<string>> ActionList = new List<Action<string>>
{
inputString => //print reverse of string
{
Console.WriteLine(inputString.Reverse());
},
inputString => //print reverse of string if "Cat" otherwise print the string twice
{
if (inputString.Equals("Cat"))
{
ActionList[0](inputString);
}
else
{
ActionList[2](inputString);
}
},
inputString => //print the string twice
{
Console.WriteLine(inputString);
Console.WriteLine(inputString);
},
inputString => //print the string in uppercase
{
Console.WriteLine(inputString.ToUpper());
},
inputString => //print the string in lowercase
{
Console.WriteLine(inputString.ToLower());
},
};
Реальная вещь будет содержать сотни действий, каждое из которых будет гораздо более сложным, многие будут вызывать десятки других действий по-разному внутриоператоры switch и т. д.
Желательно, чтобы каждое действие было заключено в их собственный статический класс, чтобы я мог сохранить весь код, необходимый для работы этого действия, который я написал в этом классе, возможно, даже некоторыедополнительные свойства тоже.Но, конечно, это все еще боль, потому что мне все еще приходится жестко кодировать список и добавлять элементы каждый раз, когда я добавляю новое действие, и хотя я могу создать общий интерфейс для каждой реализуемой оболочки, я не могу сделать его статичным (я понимаю, почему интерфейсыне может быть статичным), несмотря на то, что когда-либо требуется только «статическое поведение», которое является немедленным красным флагом.
Кто-нибудь знает хороший способ сделать это?