.NET 5项目同命名空间下不同来源Model引用规则差异原因问询
问题根因
你遇到的是C#的命名空间就近匹配规则导致的命名冲突,和T4生成/手动创建类的方式没有任何关系:
- 你当前Razor页面后台类的命名空间是
MyApp.Pages.ClassWeek,命名空间的最后一段名称正好和MyApp.Models下的ClassWeek类完全重名 - 当你在这个命名空间下直接写
ClassWeek时,编译器会优先将其识别为MyApp.Pages.ClassWeek这个命名空间本身,而不是你要引用的Model类,因此必须显式加Models.前缀来明确指定目标类的所属命名空间 - 而
ParticipatingSchool没有和当前上下文中的任何命名空间、类、接口等名称重复,所以可以直接使用。
解决方法(可选)
如果不想每次都加前缀,可以在页面代码的using段加别名声明即可:
using ClassWeek = MyApp.Models.ClassWeek;
声明后你就可以直接用 ClassWeek 指代Model类,不需要再加前缀。
内容的提问来源于stack exchange,提问作者Norbert Norbertson
相关产品推荐
相关产品推荐

