У меня есть объект задачи, который должен быть разрешен в зависимости от типа задачи. Я бы инкапсулировал логику для конкретного типа задачи в классе, но каков общепринятый способ сопоставления типа с классом, реализующим логику разрешения?Метод фабрики или какой-либо другой шаблон?
Мой первый импульс, чтобы сделать завод, как:
TaskResolverFactory.GetForType(TaskType) // returns IsATaskResolver, which has a Resolve method
Вероятно внутри завода, заявление Case или что-то.
Другая мысль - использовать что-то вроде StructureMap
, но я думаю, что это излишняя ситуация для этой ситуации - вы согласны?
Какие другие методы мне не хватает, и каков общепринятый метод замены большого оператора Case/Switch?
Вау - я не кодировал Атрибуты, это выглядит невероятно просто. Спасибо за это! – grefly
@grefly, он хорошо подходит для подобных случаев. MS использует тот же шаблон для сопоставления классов TypeConverter: http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverterattribute.aspx –
Я думаю, это именно то, что я искал, не зная, что я искал. Спасибо, повторно назначил вам ответ, извинившись перед @Oded. – grefly