在您自己的类上使用 System.* 命名空间被认为是不好的做法

本文关键字:认为是 命名空间 自己的 System | 更新日期: 2023-09-27 17:56:41

我有一个名为ConfigurationElementCollection<T>的类

它是System.Configuration.ConfigurationElementCollection的通用实现

它存储在我们的解决方案Project.Utility中.dll但我已将其定义为System.Configuration命名空间的一部分

namespace System.Configuration
{
    [ConfigurationCollection(typeof(ConfigurationElement))]
    public class ConfigurationElementCollection<T> : 
        ConfigurationElementCollection where T : ConfigurationElement, new()
    {
       ...
    }
}

当类不是系统的一部分时,将类放在 System.* 命名空间中是否被视为不良做法。 基类库?

从表面上看,这似乎是有道理的,因为它将具有相似功能的相似类保留在同一个地方。但是,对于那些没有意识到它实际上是非 .net BCL 的一部分的人来说,这可能会引起混淆,因为他们不知道去哪里寻找参考。

在您自己的类上使用 System.* 命名空间被认为是不好的做法

虽然你的类是相似的,但它仍然不是BCL的一部分。 因此,我不会将其放入System.*中。 这会引起混乱,特别是当一个人去使用它并且他们引用了 System.* 然后当他们去使用你的类时得到一个讨厌的找不到消息...... :-)

我建议将System替换为您的公司/项目名称,或者用您的公司/项目名称作为命名空间的前缀。

这样你就可以清楚地表明它不是 BCL 的一部分,而是它与它们的关系。

此外,在(诚然不太可能)事件中,Microsoft实现这些具有完全相同名称的类/方法,您不会发生冲突。