На первый вопрос ответить сложнее всего.Это плохая практика, когда сущности зависят от внешних классов?Это, конечно, не самая распространенная вещь.
Если, например, вы внедряете репозиторий в свои сущности, у вас есть эффективная реализация шаблона Active Record .Некоторым людям этот шаблон нравится за удобство, которое он предоставляет, в то время как другие (например, я) считают его запахом кода или анти-шаблоном, поскольку он нарушает Принцип единой ответственности (SRP).
ВыМожно утверждать, что введение других зависимостей в сущности приведет вас в том же направлении (от SRP).С другой стороны, вы, безусловно, правы, что если вы этого не сделаете, то стремление к анемичной доменной модели .
Я боролся со всем этим долгое время, пока янатолкнулся на статью Грега Янга (заброшенную) о DDDD , где он объясняет, почему стереотипная архитектура n-уровня / n-слоя всегда будет CRUDy (и, следовательно, довольно анемичной).
Смещение акцента на моделирование объектов домена как Команды и события вместо существительных, по-видимому, позволяет нам построить правильную объектно-ориентированную модель домена.
На второй вопрос легче ответить,Вы всегда можете использовать Abstract Factory для создания экземпляров во время выполнения .С Castle Windsor вы даже можете использовать Typed Factory Facility, освобождая вас от бремени внедрения фабрик вручную.