Я пытаюсь придумать многоразовое предупреждение для бизнес-объектов в проекте, над которым я работаю. Перед сохранением одного из наших бизнес-объектов иногда нам нужно предупредить пользователя о возможных последствиях. Скажем, мой бизнес-объект был назван «Компания». Company.Delete() избавится от компании и не будет заботиться о том, что произойдет. В этой конкретной компании может быть 10 000 сотрудников, которые были бы очень разочарованы, если бы их было так легко случайно уволить с работы...
Таким образом, пользовательскому интерфейсу требуется способ увидеть что-то вроде:
- Удаление «Компании А» выведет на улицу 10 000 рабочих.
- Удаление «Компании А» оставит 1 000 000 акционеров с бесполезными акциями.
Так что я мог бы просто создать функцию вроде Company.GetWarnings(), которая возвращает некоторые строки для отображения, но мне нужно что-то получше. Если бы Company.GetWarnings() вернула первое предупреждение выше, я бы хотел, чтобы пользовательский интерфейс знал, что означает это предупреждение. Например, если появится первое предупреждение, пользовательский интерфейс будет знать, что оно означает, и обработает ситуацию, предоставив ссылку, например:
- Deleting "Company A" will put 10,000 workers on the streets.
- Would you like to find new work for these employees? 'Click Here'
Или, возможно, другой бизнес-объект будет использовать Company.GetWarnings() и, зная, что некоторые работники будут уволены с работы, может автоматически рассылать выходные пособия. Вы поняли идею...
Так что я предполагаю, что требование звучит довольно просто, но я немного теряюсь в второстепенных деталях. В основном, какую структуру я мог бы дать GetWarnings(), чтобы она возвращала:
- Предупреждающее сообщение.
- Какой-то способ определить, что это за сообщение.
Оставив меня на мой вопрос:
Есть ли у кого-нибудь передовой опыт, примеры или предложения по реализации такой системы предупреждений? Больше всего меня беспокоит № 2. Будет множество различных предупреждающих сообщений, поэтому я не хочу просто возвращать say... a Dictionary, где int является идентификатором типа предупреждения. С этим будет трудно быстро справиться.
Спасибо за любой совет, который вы можете дать.