7

我有一堂课叫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 的一部分的人来说,这可能会造成混淆,因为他们不知道去哪里寻找参考。

4

2 回答 2

7

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

于 2011-05-14T17:04:13.013 回答
3

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

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

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

于 2011-05-14T17:09:42.827 回答