C# 在C中加强名称空间之间的类型可见性#

C# 在C中加强名称空间之间的类型可见性#,c#,dependencies,C#,Dependencies,我的想法是,在C#中加强名称空间之间的类型可见性,而不是程序集(内部)之间的类型可见性可能会很有用 这样的概念似乎有助于开发人员使用代码库,确保在其他提供类似功能的内部类型可用的地方使用正确的类型,但会导致“架构”缺陷(不必要的依赖性等) 其他人认为这会有用吗?目前是否可能?若否,原因为何 另外,排除的概念——能够在名称空间和/或程序集之间的引用上指定负约束是否是对C#?的有益补充类型强烈绑定到定义它的程序集。命名空间不是,它可以出现在多个程序集中。例如,系统配置 让我们假设程序集的元数据格式将

我的想法是,在C#中加强名称空间之间的类型可见性,而不是程序集(内部)之间的类型可见性可能会很有用

这样的概念似乎有助于开发人员使用代码库,确保在其他提供类似功能的内部类型可用的地方使用正确的类型,但会导致“架构”缺陷(不必要的依赖性等)

其他人认为这会有用吗?目前是否可能?若否,原因为何


另外,排除的概念——能够在名称空间和/或程序集之间的引用上指定负约束是否是对C#?

的有益补充类型强烈绑定到定义它的程序集。命名空间不是,它可以出现在多个程序集中。例如,系统配置

让我们假设程序集的元数据格式将被更改(-10亿点),以存储命名空间的属性。这些属性仍然必须存储在程序集中,因为它是元数据的存储单元。现在,您必须处理CLR加载另一个程序集并找到相同名称空间但属性冲突的可能性。这怎么可能解决呢


更严重的是,如何防止外部代码仅仅使用相同的名称空间和属性突然访问本应是私有的实现细节。这将完全破坏具有internal关键字的值。

类型被强绑定到定义它的程序集。命名空间不是,它可以出现在多个程序集中。例如,系统配置

让我们假设程序集的元数据格式将被更改(-10亿点),以存储命名空间的属性。这些属性仍然必须存储在程序集中,因为它是元数据的存储单元。现在,您必须处理CLR加载另一个程序集并找到相同名称空间但属性冲突的可能性。这怎么可能解决呢


更严重的是,如何防止外部代码仅仅使用相同的名称空间和属性突然访问本应是私有的实现细节。这将完全破坏具有内部关键字的值。

您可以将它们公开,使用自定义属性标记它们,然后添加FxCop规则以检查来自命名空间外部的访问

这不会安全地强制执行限制,并且在使用反射访问成员时会失败,但是如果只是关于策略/编码方式,这就足够了


我认为还有一个现有的属性可以对Intellisense隐藏成员,您可以将其与自定义属性一起使用。

您可以将其公开,使用自定义属性标记它们,然后添加FxCop规则以检查来自命名空间外部的访问

这不会安全地强制执行限制,并且在使用反射访问成员时会失败,但是如果只是关于策略/编码方式,这就足够了


我认为还有一个现有属性可以从Intellisense中隐藏成员,您可以将该属性与自定义属性结合使用。

这是跨程序集的名称空间的一个优点。我想知道另一种类型的代码分组是否有用。我认为在C#中使用更细粒度的词汇表将非常有用,以便根据客户机类型(例如,功能的消费者或合作的生产者)定义类型可见性。这是关于跨越程序集的名称空间的一个优点。我想知道另一种类型的代码分组是否有用。我认为在C#中使用更细粒度的词汇表将非常有用,以便根据客户机类型(例如,功能的消费者或合作的生产者)定义类型可见性。只是大声思考。