如何从另一个类/文件引用 Using Alias 指令

How do I reference a Using Alias Directive from another class/file

提问人:ack 提问时间:1/23/2021 更新时间:8/6/2023 访问量:439

问:

我有一个 using alias 指令来别名一个复杂的类型以提高可读性。

namespace MyNamespace
{
    using ColorMap = SortedDictionary<float, Color>;

    public class Foo
    {
        public ColorMap colors = new ColorMap();

        ...
    }
}

在另一个文件(这个类的测试)中,我有:

namespace MyNamespace.Tests
{
    public class TestFoo
    {

        [Fact]
        public void TestFooCtor()
        {
            SortedDirctionary<float, Color> colorMap = 
                new SortedDirctionary<float, Color>

            // Want to be able to just do this:
            //ColorMap colorMap = new ColorMap();

            ...
        }
    }
}

有什么方法可以从我的测试中引用 ColorMap 而不会用另一个指令重复我自己?using

看来我应该能做到?真的,我希望我能使这个“typedef”归类 Foo 所有,然后能够通过说 来引用它。在 C# 中似乎都不可能?如何执行可在客户端代码中使用的 C++ 样式类型定义。MyNamespace.ColorMapFoo.ColorMap

C# using 指令

评论

0赞 Hans Kesting 1/24/2021
也许您可以创建一个类 Colormap 来扩展该字典?

答:

2赞 TheGeneral 1/23/2021 #1

不,你不能这样做:

using 指令(C# 参考)

using 指令的范围仅限于它所在的文件 出现。

进一步澄清:

命名空间 - C# 语言规范

鉴于

namespace N3
{
    using R = N1.N2;
}

namespace N3
{
    class B: R.A {}            // Error, R unknown
}

引入 R 的using_alias_directive范围仅扩展 添加到包含它的命名空间正文中的成员声明, 所以 R 在第二个命名空间声明中是未知的。

简而言之,它们仅在它们声明的封闭编译单元或直接命名空间中有效,并且仅限于它们所在的文件。