У меня есть класс SalesOrder, который наследуется несколькими различными типами заказов на продажу. У него есть метод ValidateItems (OrderItemList, itemAdditionalValidation), который принимает список элементов заказа и делегата для дополнительной проверки элемента заказа. Каждый из различных заказов на продажу определяет свою собственную версию делегата, а затем передает ее при вызове ValidateItems родительского класса SalesOrder. Делегат принимает объект OrderItem. Класс OrderItem имеет метод Validate (). Метод ValidateItems просматривает список и вызывает Validate для каждого OrderItem, а затем вызывает делегат itemAdditionalValidation и передает его в OrderItem.
До сих пор, когда я хотел проверить элементы, я всегда создавал добавление всех элементов в соответствующий заказ, а затем заказ вызывал ValidateItems и заботился обо всей проверке. Однако теперь я хочу иметь возможность вызывать OrderItem.Validate напрямую, не создавая при этом и порядок, однако я не знаю, как реорганизовать делегата. По сути, я хочу, чтобы OrderItem мог знать, каких делегатов вызывать, основываясь на типе Order, с которым он имеет дело. Есть идеи? Кроме того, любые советы о том, как улучшить мою текущую архитектуру, будут с благодарностью.