【问题标题】:Special characters in a Namespace命名空间中的特殊字符
【发布时间】:2012-05-19 08:29:44
【问题描述】:

我正在考虑在自定义框架的命名空间中使用带有变音符号(例如 ō)的字符。这个想法是作为区分产品的一种方式出现的,但我想确定这不是一个坏主意,如果有什么关于它的东西会在以后回来咬我。在我的搜索中,我没有看到使用特殊字符的命名空间的其他示例,也没有关于这个主题的任何类似讨论,这让我在继续沿着这条道路前进时停下来。

我最初也考虑使用变音符号来命名程序集,但我遇到的第一个障碍是尝试对程序集进行数字签名。我无法让特殊字符出现在命令提示符中,因此出现 No valid input 错误。也许还有另一种解决方法?

我意识到的一个问题是,它使在 Visual Studio 中输入命名空间变得更具挑战性。但是,我不认为这是一个主要问题,因为该字符将出现在我使用的单词的末尾附近,因此该单词将相当独特,并且使用 IntelliSense 这应该不是太大的问题。

考虑以下示例,包含在程序集 Macron.dll 中:

namespace Macrōn.Library
{
    public class MyLibrary
    {
        public string MyProperty { get; set; }
    }
}

生成和使用此 Macron.dll 似乎没有问题,区分此示例 Macrōn.Library 命名空间也没有问题。文件、文件夹、项目和解决方案名称 Macrōn 似乎没有引起任何问题,而且一切似乎都与源代码控制相吻合,没有任何问题。

在程序集和命名空间中使用变音符号时,我还有什么其他注意事项或遗漏吗?关于解决我签署程序集的问题有什么想法吗?这种方法一定会失败吗?是否真的不值得实施,因为它可能会令人困惑或难以/难以使用?

这将变成以后要撤消的大量工作,所以我想知道在我深入此之前我是不是在踢自己的脚。

谢谢。

【问题讨论】:

    标签: c# .net visual-studio namespaces .net-assembly


    【解决方案1】:

    我想确定这不是一个坏主意,如果以后有什么事情会回来咬我。

    有效。许多混淆器将命名空间/类型更改为具有 unicode 字符,其中一些甚至不可打印,以使逆向工程更加困难。

    话虽如此,如果这是一个其他人会使用的公共框架,我会劝阻它。这将强制使用命名空间的任何人将其源文件保存为 Unicode / UTF8,如果他们不这样做,则 ō 字符可能会被替换为 ?。然后它就不再编译了。

    阿列克谢也发表了非常好的评论。除了复制和粘贴之外,我不知道如何键入 ō 字符。那肯定会让我慢下来。

    【讨论】:

    • +1。此外,大多数人将无法在代码中和(更重要的是)在搜索引擎中输入它。而且 Stackoverflow 解析器不能正确处理这样的名称:)。
    • 谢谢,正是我正在寻找的见解。
    【解决方案2】:

    我想补充一点 vcsjones 的答案,不是每个人都使用 Visual Studio,所以你不应该依赖智能感知来让任何人都更容易。

    我意识到的一个问题是,它使得在 Visual Studio 更具挑战性。我不认为这是一个主要问题, 然而,因为这个角色会出现在我是这个词的结尾附近 使用,这个词将是相当独特的,并且使用 IntelliSense 这个 应该不是太大的问题

    如果我不得不解决这个问题,我会非常讨厌使用别人的图书馆。

    【讨论】:

    • +1 表示“你不应该依赖智能感知来让任何人都更轻松”。
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多