У меня очень сложная настройка объектов, и каждый выбор по пути ограничивает или расширяет доступные опции. Я бы не хотел бросать исключения или создавать недопустимый экземпляр объекта.
Итак, я хочу ограничить параметры (методы, доступные для вызова) при построении экземпляра на основе параметров ввода предыдущего метода. Например, если у меня есть некоторые правила, которые говорят, что если пользователь имеет тип «A», то разрешить его добавление в роли, в противном случае, если он имеет тип «B», запросить местоположение и если местоположение находится в определенном почтовом индексе ... идея
Возможно ли это с помощью анонимных методов, типов, чего угодно
тип пользователя A
UserBuilder builder = new UserBuilder
builer.Build().ForType("A").WithRoles(rolesList);
тип пользователя B
UserBuilder builder = new UserBuilder
builer.Build().ForType("B").WithLocations(locationList);
Обновление:
Поэтому в основном мой вопрос таков: есть ли способ ограничить все остальные параметры публичного метода из API, кроме допустимых, основанных на состоянии объекта.