Я бы определил список правил, а затем ваш основной код просто зацикливался на всех ячейках, а затем вызывал правила, соответствующие ячейке.Затем вы можете относительно легко добавлять или удалять правила в будущем, не изменяя логику основного цикла.
Таким образом, вам нужен класс, представляющий правило, каждое правило указывает типы влево / вправо / вверх / вниз, которым оно соответствуетпротив и затем имеет метод, который вызывается в случае совпадения.Сделайте соответствующие поля обнуляемыми, чтобы вы могли указать, если вам все равно, какой тип соседа ...
class Rule
{
public ElementType? Left { get; set; }
public ElementType? Right { get; set; }
public ElementType? Top { get; set; }
public ElementType? Bottom { get; set; }
public Action Process { get; set; }
}
... на практике вашему «процессу» потребуется хотя бы один параметр, ссылка наячейка, которая обрабатывается.Таким образом, вы можете изменить его на Action или как угодно.