是否正在使用System。*您自己的类上的命名空间被认为是不良实践?

时间:2011-05-14 17:00:48

标签: c# .net namespaces naming-conventions base-class-library

我有一个名为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。*名称空间放入System。*基础类库时,将它们视为不良做法。

从表面上看,它似乎有意义,因为它在同一个地方保留了类似功能的类似类。然而,如果没有意识到它实际上是非.net BCL的一部分,它可能会引起混淆,因为他们不知道去哪里寻找参考。

2 个答案:

答案 0 :(得分:7)

虽然你的班级很相似,但它仍然不是BCL的一部分。我不会把它放在System。*因为这个。它会引起混淆,特别是当一个人去使用它并且他们有System。*引用然后在他们去使用你的类时得到一个讨厌的找不到消息....: - )

答案 1 :(得分:3)

我建议您使用公司/项目名称替换System,或者在命名空间前加上公司/项目名称。

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

同样在(不可否认的)事件中,Microsoft使用完全相同的名称来实现这些类/方法,您将不会发生冲突。