Поскольку речь идет больше об управлении потоком кода, чем о чистом поиске, я бы, вероятно, использовал бы объектно-ориентированный подход и поместил код для каждого «обработчика» в отдельные классы (с общими вещами внутри базового класса).
Вы можете создать общий интерфейс, такой как
public interface ITypeHandler {
void HandleType(Type type);
}
... и поместить реализацию обработчиков в словарь типа Dictionary<Type, ITypeHandler>
, если хотите, или у вас может быть свойствов интерфейсе, определяя, какой тип он обрабатывает, и выбирая из списка (возможно, Dependency Injected) обработчики на основе этого свойства.
Это добавляет такие преимущества, как разделение задач, тестируемость и т. д.
(Обратите внимание, что * Handler не очень хорошее имя, вам нужно будет создать лучшее имя на основе сценария, который вы описываете.)