如何从另一个 class/file 引用 Using Alias 指令

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

我有一个 using alias directive 为复杂类型起别名以提高可读性。

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

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

        ...
    }
}

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

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 指令重复自己?

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

不,你不能这样做:

using directive (C# Reference)

The scope of a using directive is limited to the file in which it appears.

进一步说明:

Namespaces - C# language specifications

给定

namespace N3
{
    using R = N1.N2;
}

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

the scope of the using_alias_directive that introduces R only extends to member declarations in the namespace body in which it is contained, so R is unknown in the second namespace declaration.

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