Этот сценарий похож на у Елисея , но нацелен на обеспечение правильного использования модели вашего домена в Проектирование на основе домена .
Допустим, выиметь сборку MyProject.Core
, которая содержит все ваши доменные модели.Если вы не хотите, чтобы другие люди непосредственно создавали экземпляры моделей вашего домена, вы можете сделать конструкторы internal
.
Другая сборка, называемая MyProject.Services
, содержит доменные службы, которые специализируются на создании допустимых объектов домена.,Эта сборка будет иметь ссылку на MyProject.Core
.Атрибут InternalsVisibleTo
используется для предоставления доступа к сборке службы домена для конструкторов internal
.
Еще одно преимущество ссылки с MyProject.Services
на MyProject.Core
состоит в том, что он запрещает объектам домена сохранять любыессылки на доменные службы, что считается еще одной хорошей практикой DDD.
Примечание: Я никогда не применял вышеупомянутый сценарий на практике, поэтому он может быть не совсем точным на уровне DDD.Но я думаю, что это использование InternalsVisibleTo
, которое не связано с модульным тестированием.