好东西
// ok to alias a List Type
using AliasStringList = System.Collections.Generic.List<string>;
// and ok to alias a List of Lists like this
using AliasListOfStringList1 = System.Collections.Generic.List<System.Collections.Generic.List<string>>;
Run Code Online (Sandbox Code Playgroud)
坏的东西
// However **error** to alias another alias
using AliasListOfStringList2 = System.Collections.Generic.List<AliasStringList>;
Run Code Online (Sandbox Code Playgroud)
产生编译错误
找不到类型或命名空间名称'AliasStringList'(您是否缺少using指令或程序集引用?)
你只是不能使用在另一个使用中使用的别名声明的别名.对于像您一样的一组使用,您可以假设使用声明的兄弟不存在.
写入using-alias-directives的顺序没有意义,using-alias-directive引用的namespace-or-type-name的解析不受using-alias-directive本身或其他使用的影响-立即包含编译单元或命名空间体中的指令.换句话说,该空间或类型名称一个的使用别名指示仿佛直接包含编译单元或命名空间体没有using指令解析
它提供了您确切问题的简化示例,这是预期的行为:
namespace N1.N2 {}
namespace N3
{
using R1 = N1; // OK
using R2 = N1.N2; // OK
using R3 = R1.N2; // Error, R1 unknown
}
Run Code Online (Sandbox Code Playgroud)