为什么不能使用部分根名称空间?

时间:2019-01-03 05:46:11

标签: c# vb.net

我有一个带有根命名空间Protege.MyLibrary的已编译类库。

它具有一些根类型,例如CommonlyNamedType

当我将库添加到使用的应用程序中时,为了某些情况下的清晰起见,我希望能够将变量指定为:

using Protege;
...
MyLibrary.CommonlyNamedType oMyType = new MyLibrary.CommonlyNamedType;

而不是

using Protege.MyLibrary;
...
CommonlyNamedType oMyType = new CommonlyNamedType;

前者无法编译,表示名称空间Protege“不需要使用指令”,可以将其删除。

这似乎很奇怪,因为我可以改用其他方式添加其他名称空间,例如Protege.MyLibrary.AnotherNamespace

我似乎能够在VB.NET中100%做到这一点-使用Imports Protege和/或Protege.MyLibrary之一或两者,甚至可选地使用冗余限定类型。但是不在C#.NET中。

我对SO和其他地方有很好的了解,但没有看到有关此行为的解释。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以静态导入类似的类

using static System.IO.File;

它不支持类,您需要使用普通的using来导入名称空间。