У меня есть сценарий, в котором у меня есть куча заданий, которые я планирую запускать в разное время, сами задания уже обрабатываются в общем, и это здорово. И у меня есть абстрактный класс BaseJob, который они все наследуют от того, что я использую для общих вещей (таких как jobPK, startTime, регистрация исключений, создание отчетов и т. Д.). Но помимо этого задания сильно различаются, они имеют разные свойства и связанные с ними данные, которые очень специфичны для них (я называю эти свойства JobDetails). Так, например:
JobDetails for Job1
-customerId int
-cost double
-sku string
-userDefinedProperties SomeCustomObjectType
JobDetails for Job2
-name string
-executionDate DateTime
-otherProperties SomeOtherCustomObjectType
В базовом классе я хотел бы иметь возможность хранить ссылку на эти JobDetails как можно более обобщенно (поэтому, другими словами, я не хочу просто сохранять его как объект), чтобы минимизировать накладные расходы на бокс / распаковка. Затем я хочу, чтобы класс BaseJob обрабатывал многие общие функциональные возможности, необходимые для приложения, поэтому, например, в случае сбоя задания я хочу сохранить его JobDetails в базе данных, чтобы его можно было перезапустить, я также хочу регистрировать любые ошибки, которые могли произойти с данной работой. Для этого мне нужно иметь возможность извлечь эти JobDetails и использовать их.
Похоже, мне нужно использовать универсальные .NET и иметь класс универсальных свойств, в которые я могу добавить что угодно, и мне не нужно беспокоиться о наборе текста. Какой лучший способ справиться с этим и сделать его эффективным и гибким?
Надеюсь, это понятно, спасибо за помощь