У меня недавно похожая задача была.
https://pastebin.com/w9Su38y0 Есть требования разных типов и есть вью для каждого типа (префаб с ui). Я поросто для выбора вью из кидаю интерфейс требования. И если он устраивает вьюху то выдается префаб. А внутри проверки я просто каст делаю к нужномоу типу требования для текущего вью. Если это не он, или при кастовании нул, то возвращаю false и дальше идёт процесс. На счет оптимизации не парюсь потому что у меня список требований не большой. Ну типов требовани 3-4 штуки. Поэтому не так много кода переписывать пришлось. А так я все нужные данные в полях монобехов храню, кастую во вьюхе к нужному типу и там уже или через свойства их беру или через методы делаю что мне надо.