Надеюсь, я могу объяснить свою проблему так, чтобы это было ясно для всех. Нам нужны ваши предложения по этому поводу.Enum и словарь <Enum, Action>
У нас есть тип Enum, который имеет более 15 констант. Мы получаем отчет из веб-службы и переводим его один столбец в этот тип Enum. И на основе того, что мы получаем от этого веб-сервиса, мы запускаем определенные функции, используя Словарь
Почему я прошу идеи? Предположим, что 3 из этих участников Enum отвечают определенным функциям в нашем словаре, а остальные используют ту же функцию. Итак, есть ли способ добавить их в наш Словарь лучше, чем добавлять их по одному? Я также хочу сохранить эту структуру, потому что, когда пришло время, у нас могут быть конкретные функции в будущем для тех, которые я назвал «остальными».
Чтобы быть более ясным, вот пример того, что мы пытаемся сделать:
Enum:
public enum Reason{
ReasonA,
ReasonB,
ReasonC,
ReasonD,
ReasonE,
ReasonF,
ReasonG,
ReasonH,
ReasonI,
ReasonJ,
ReasonK
}
Определение нашего словаря:
public Dictionary<Reason, Action<CustomClassObj, string>> ReasonHandlers = new Dictionary<Reason, Action<CustomClassObj, string>>{
{ Reason.ReasonA, HandleReasonA },
{ Reason.ReasonB, HandleReasonB },
{ Reason.ReasonC, HandleReasonC },
{ Reason.ReasonD, HandleReasonGeneral },
{ Reason.ReasonE, HandleReasonGeneral },
{ Reason.ReasonF, HandleReasonGeneral },
{ Reason.ReasonG, HandleReasonGeneral },
{ Reason.ReasonH, HandleReasonGeneral },
{ Reason.ReasonI, HandleReasonGeneral },
{ Reason.ReasonJ, HandleReasonGeneral },
{ Reason.ReasonK, HandleReasonGeneral }
};
Поэтому в основном то, что я спрашиваю есть, есть ли способ добавить Причина, функция пара более разумно? Потому что, как вы можете видеть после ReasonC, все остальные причины используют одну и ту же функцию.
Благодарим вас за предложения.
Это требует «переключения», если у вас нет динамических требований. – leppie
Вы говорите, что можете получить набор значений, и если набор содержит как ReasonD, так и ReasonE, вы хотите запустить HandleReasonGeneral только один раз? – phoog
для ReasonD и ReasonE Я хочу вызвать ту же функцию. Но я хочу добавить эту функцию в словарь эффективным образом. – selo