两个命名空间下存在同名类时如何设置默认调用类,无需写全限定名
C# 同名类型冲突解决方案
多命名空间下同名Legs类指定默认实现
使用using 别名指令指定目标类型的别名,优先级高于全局引入的命名空间内的同名类型,无需修改原有命名空间引用:
using Code1.Dog; using Code2.Cat; // 声明后直接写Legs默认指向Code1.Dog.Legs using Legs = Code1.Dog.Legs;
如果需要使用Code2.Cat下的Legs类,单独写全限定名即可,不会出现二义性报错。
ASP.NET中自定义User类与系统同名类冲突
同样使用using别名指令指定自定义User类为当前文件的默认实现:
// 写在当前文件的using声明区域,优先级高于System.Security.Principal的全局引入 using User = MyNamespace.User;
如果你使用C# 10及以上版本,可以通过全局别名实现全项目生效,无需每个文件重复声明:
// 放置在项目的GlobalUsings.cs文件中 global using User = MyNamespace.User; // 如需使用系统侧的User相关类型,可以单独设置别名避免冲突 global using SysUser = System.Security.Principal.IPrincipal;
内容的提问来源于stack exchange,提问作者Christopher Vickers
相关产品推荐
相关产品推荐

