代码之家  ›  专栏  ›  技术社区  ›  fletcher

什么时候应该使用[assembly:InternalsVisibleTo()]?

  •  14
  • fletcher  · 技术社区  · 14 年前

    我知道 内部可见

    我正在努力思考另一种情况,什么时候应该使用它。引入这个属性是为了帮助单元测试,还是另有原因?

    3 回复  |  直到 11 年前
        1
  •  14
  •   Elisha    14 年前

    一种情况是在程序集(如内部数据对象和逻辑层)之间分离逻辑。您不想将类公开给用户,但仍然希望使用自己程序集中的对象。

    InternalsVisibleTo 在非单元测试上下文中。

        2
  •  7
  •   Community dbr    7 年前

    这种情况类似于 Elisha's Domain-driven design .

    MyProject.Core ,其中包含所有域模型。如果您不想让其他人直接创建域模型的实例,您可以使用构造函数 internal .

    另一个程序集,称为 MyProject.Services ,包含专门用于创建有效域对象的域服务。此程序集将引用 我的项目。核心 . 这个 InternalsVisibleTo 属性用于授予域服务程序集对 内部的 施工人员。

    参考的另一个好处是 我的项目服务 我的项目。核心 它不允许域对象保留对域服务的任何引用,这被认为是另一种良好的DDD实践。

    注: 我从未在实践中应用过上述场景,因此在DDD级别上可能并不完全准确。但这是对 内部可视 我可以想到,这与单元测试无关。

        3
  •  6
  •   Willem van Rumpt    14 年前

    除了测试,我唯一使用过 InternalsVisibleTo 属性,在创建序列化程序集时为。