gpt4 book ai didi

C# 命名空间 : how to follow standards without causing annoying conflicts?

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:30 25 4
gpt4 key购买 nike

我正在开发一个 C# 库(为了这个问题,我们就称它为“Foo”)。它有一些与标准 .NET 需求非常相似的需求:例如,它提供一些绘图服务和一些转换服务。

为了熟悉和库的用户能够猜出什么叫什么,我想遵循 .NET 标准,并将库的这些部分命名为 Foo.Drawing 和 Foo.Convert(等等在)。但我发现在实际使用中,这会导致疼痛。人们几乎总是有“使用系统”;在每个文件的顶部,当使用这个库时,他们想要“使用 Foo;”以及。但现在他们有两个 Drawing 和两个 Convert 模块,接下来就很热闹了。

例如,现在您必须明确拼出 System.Drawing.Color,而不是仅仅使用 Drawing.Color 作为参数或变量类型,否则编译器会提示 Foo.Drawing 没有 Color 类型。同样,您想要使用标准的 Convert.ToInt32,您必须说 System.Convert.ToInt32,即使您已经在使用 System,因为否则它会找到 Foo.Convert 而找不到 ToInt32。

我明白为什么这一切都是这样,但我对 C# 社区还是新手,所以我不知道哪个是最标准的解决方案:

  1. 保持这种方式,并期望用户在必要时使用完全限定的名称?
  2. 将冲突的模块重命名为其他名称(可能是 Foo.Graphics 而不是 Foo.Drawing,Foo.Conversion 而不是 Foo.Convert)?
  3. 在标准名称(Foo.FDrawing 和 Foo.FConvert)上使用一些前缀?
  4. 还有别的吗?

我们将不胜感激更有经验的 C# 大师的任何建议!

最佳答案

您可以使用命名空间别名:

using System;
using FConvert = Foo.Convert;

public class Bar
{
public void Test()
{
var a = Convert.ToInt32("1");
var b = FConvert.ToInt32("1");
}
}

关于C# 命名空间 : how to follow standards without causing annoying conflicts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com