Este escenario es similar al de Elisha's, pero tiene como objetivo imponer el uso correcto de su modelo de dominio en Domain-driven design.
Digamos que tiene un conjunto MyProject.Core
, que contiene todos sus modelos de dominio. Si no desea que otras personas creen directamente instancias de sus modelos de dominio, puede crear los constructores internal
.
Otro ensamblaje, llamado MyProject.Services
, contiene servicios de dominio que están especializados en la creación de objetos de dominio válidos. Este conjunto tendrá una referencia al MyProject.Core
. El atributo InternalsVisibleTo
se usa para otorgar acceso al conjunto de servicios de dominio a los constructores internal
.
Otro beneficio de la referencia de MyProject.Services
a MyProject.Core
es que no permite que los objetos de dominio guarden referencias a servicios de dominio, lo que se considera una buena práctica de DDD.
Nota: Nunca he aplicado el escenario anterior en la práctica, por lo que puede no ser completamente preciso en el nivel de DDD. Pero este es un uso de InternalsVisibleTo
que pude pensar, que no está relacionado con la unidad de prueba.
Estoy de acuerdo. Solo lo uso en escenarios de pruebas unitarias, pero el escenario que describes es razonable. – Steven