不同程序集中系统命名空间类型和用户定义类型之间的命名冲突

age*_*ris 2 c# assemblies coding-style conflict namespaces

我有一个关于名为 Action 的类型的名称解析的问题。虽然该项目处于早期状态并且所有内容都在同一个项目中声明,但编译器始终更喜欢我自己的类。然而,由于必须将项目分成不同的程序集(即 ProjectName.Common、ProjectName.Engine 等),因此 System.Action 和 ProjectName.Common.Action 之间出现了命名冲突。

我发现我可以在任何项目文件的命名空间声明内显式导入项目内部命名空间,而系统仍然导入到 IDE 最初创建的全局范围中。事实上,这可行,但看起来不太优雅。有没有更好的方法来解决这个问题?重命名我的 Action 类并不是一个真正可以接受的解决方案,因为它是一个非常常见的域名,而不是像 Math 等特殊的东西。

代码示例:

using System;
...

namespace ProjectName.Engine {

    using ProjectName.Common;

    class SomeClass {

        private Action action;
        ...

    }

}
Run Code Online (Sandbox Code Playgroud)

也许有人知道解决此类命名冲突的秘诀......

Ode*_*ded 5

您可以使用命名空间别名

using Example = ProjectName.Common;

class SomeClass {

    private Example.Action action;
    ...

}
Run Code Online (Sandbox Code Playgroud)

或者,仅该类型的类型别名Action

using Act = ProjectName.Common.Action;

class SomeClass {

    private Act action;
    ...

}
Run Code Online (Sandbox Code Playgroud)