Я пытаюсь реализовать шаблон наблюдателя, используя ninject и NHibernate.
Я хотел бы иметь возможность вводить наблюдателей, которые действуют как «триггеры», когда объект сохраняется или удаляется через NHibernate.
Ключевые моменты-
- Я хочу, чтобы наблюдатель уведомлялся каждый раз, когда объект сохраняется, включая каскадные сохранения, поэтому я использую события NHibernate PostInsert / PostUpdate.
- Я хочу иметь возможность вводить наблюдателей через Ninject (не хочу, чтобы ядро было где-либо в обработчиках событий nhibernate).
- Наблюдатели различаются в зависимости от типа сохраняемого объекта, поэтому мне нужен хороший способ узнать, каких наблюдателей следует вызывать в событиях NHibernate.
Мой код теперь отлично работает для объектов, которые загружаются через NHibernate с использованием инжектора конструктора. Класс наблюдателя внедряется в модель предметной области, которая передается через события nhibernate и может быть запущена без проблем.
Проблема: наша существующая кодовая база использует конструкторы по умолчанию для наших доменных объектов по сравнению с фабрикой. Из-за этого наблюдатели не будут введены, если мы не перейдем на фабрику.
Я знаю, что переключение всего на фабрику будет работать, но я хотел посмотреть, есть ли у кого-нибудь лучшие предложения для достижения этой цели. Итак, я должен создать фабрику для создания новых объектов или что-то еще?