Avalonia 11.1.0:文件夹创建Window/UserControl时命名空间不匹配问题咨询
Avalonia 11.1.0中Window/UserControl命名空间不匹配文件夹路径的原因
这个问题的核心是Avalonia框架自带的Window/UserControl模板,和IDE默认的普通类模板,在命名空间生成逻辑上存在差异:
普通类的命名空间生成逻辑:
IDE(VS/Rider等)自带的普通类模板,会自动读取当前创建文件的文件夹层级,将路径转换为命名空间的后缀。比如在Views/NewFolder文件夹下创建类,模板会自动把根命名空间AvaloniaApplication1和文件夹路径拼接成AvaloniaApplication1.Views.NewFolder。Avalonia Window/UserControl的命名空间生成逻辑:
Avalonia提供的Window/UserControl模板,命名空间部分只使用项目的根命名空间变量,没有关联当前文件夹的路径信息。模板里的命名空间代码是类似namespace $rootnamespace;的写法,这个变量只会取项目创建时设置的根命名空间(比如AvaloniaApplication1),不会根据文件夹位置自动扩展。
你可以对比两者的模板代码片段:
普通类模板的命名空间部分:
namespace $rootnamespace.$folderpath$ { internal class $safeitemname$ { } }
Avalonia Window模板的命名空间部分:
namespace $rootnamespace; public partial class $safeitemname$ : Window { public $safeitemname$() { InitializeComponent(); } }
简单来说,就是Avalonia的UI组件模板没做文件夹路径适配,而普通类模板做了,所以才会出现同一文件夹下两种类的命名空间不一致的情况。
内容的提问来源于stack exchange,提问作者Yannick
相关产品推荐
相关产品推荐

