我正在开发一个 C# 库(为了这个问题,我们就称它为“Foo”)。它有一些与标准.NET 需求非常相似的需求:例如,它提供一些绘图服务和一些转换服务。
为了熟悉和库的用户能够猜出什么叫什么,我想遵循 .NET 标准,并将库的这些部分命名为 Foo.Drawing 和 Foo.Convert(等等)。但我发现在实际使用中,这会导致疼痛。人们几乎总是有“使用系统;” 在每个文件的顶部,当使用这个库时,他们想要“使用 Foo;” 也是。但是现在他们有两个绘图模块和两个转换模块,并且随之而来的是欢闹。
例如,现在不能只使用 Drawing.Color 作为参数或变量类型,您必须明确拼写 System.Drawing.Color,否则编译器会抱怨 Foo.Drawing 没有 Color 类型。类似地,如果您想使用标准的 Convert.ToInt32,则必须说 System.Convert.ToInt32,即使您已经在使用 System,因为否则它会找到 Foo.Convert 而无法找到 ToInt32。
我明白为什么这一切都是这样,但我还是 C# 社区的新手,所以我不知道哪个是最标准的解决方案:
- 保持这种状态,并期望用户在必要时使用完全限定的名称?
- 将冲突的模块重命名为其他名称(可能是 Foo.Graphics 而不是 Foo.Drawing,以及 Foo.Conversion 而不是 Foo.Convert)?
- 在标准名称(Foo.FDrawing 和 Foo.FConvert)上使用一些前缀?
- 还有什么?
来自您更有经验的 C# 大师的任何建议将不胜感激!