如何从另一个 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.
简而言之,它们仅在它们声明的封闭编译单元或直接命名空间中有效,并且仅限于它们所在的文件。
我有一个 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.
简而言之,它们仅在它们声明的封闭编译单元或直接命名空间中有效,并且仅限于它们所在的文件。