C# WPF MVVM开发框架Caliburn.Micro View / View Model 命名⑨

01

约定

在收到Caliburn Micro中有关视图和ViewModel解析的反馈后,我们添加了新功能,以简化类型解析,同时保持驱动它的健壮的基于正则表达式的名称转换机制。为了更好地了解这些新功能以及类型解析通常如何在框架中工作,现在是详细描述框架支持的开箱即用的命名约定的适当时机。您现在应该已经知道,框架很大程度上依赖于命名约定,在类型解析中,需要考虑两种不同的命名约定:命名类型本身的约定和命名类型命名空间的约定。

类型名称的命名约定

如本文档其他部分所述,视图及其伴生ViewModel最常见的命名约定如下所示:

673f3b5488514a49c19b6826874471bd.png

因为我们认识到“视图”是一个抽象的术语,大多数应用程序的主要“视图”实际上是某种“页面”,所以我们认为框架将“页面”作为“视图”的同义词是很重要的。因此,该框架对该用例具有内置支持:

e48ab67f0410885c15a2b21df03f7fa0.png

如果仔细检查,您会发现上面两个约定之间存在细微的差异。“ViewModel”只是简单地添加到一个带有后缀名的“页面”中,以生成其ViewModel的名称。但是,只有“模型”添加到“视图”后缀名中,以生成其伴生ViewModel的名称。这种差异主要源于将某些东西命名为“MainViewModel”而不是“MainPageViewModel”的语义尴尬。因此,从“视图”后缀视图名称派生的视图模型的命名约定通过将视图模型命名为“MainViewModel”来避免冗余。

框架支持的标准命名约定的一个限制是,没有考虑到英语中的不同语言甚至不同术语。尽管“视图”和“视图模型”可以被普遍理解,因为它们都是Caliburn Micro致力于的MVVM设计模式的重要方面,但“页面”这样的词却不是。因此,一个健壮的框架至少允许通过定制来支持额外的“视图名称后缀”(例如“Pagina”、“Seite”、“Form”、“Screen”)。

多视图支持的命名约定

如文档约定部分所述,该框架旨在处理ViewModel和View之间的一对多关系。框架支持的标准公约如下:

2312d3461d4b6f00ae117664deea9b19.png

如前一节所述,ViewModel的名称可能包含也可能不包含“视图”后缀。这就是为什么显示为可选的原因。

类型的命名空间的命名约定

在.NET开发中,所有程序集都必须有一个默认命名空间。因此,最基本的用例中,视图和视图模型组件层都位于同一个用例中。这项公约可描述如下:

baac14dba1c890e71c3476d78a953f76.png

虽然许多应用程序的所有视图和视图模型都可能位于单个部件中,但通常的做法是在项目中的单独文件夹中组织视图和视图模型。因此,默认情况下,VisualStudio将把组件放在与这些文件夹相对应的单独名称空间中。由于项目文件夹类似于操作系统文件夹,因此项目子文件夹也可以嵌套在多层中。此常见用例的命名空间命名约定可以描述如下:

06f89cd2853046ae7fef306361ac5d1e.png

尽管上面的约定涵盖了嵌套名称空间的深度方面的许多可能性,但它确实在视图和视图模型的组织方案中假设了一种并行结构。此外,将视图和视图模型放置到单独的部件中也是很常见的,这使得跨不同部件进行并行组织的可能性更小。

02

最后

原文标题:Caliburn.Micro Xaml made easy

原文链接:https://caliburnmicro.com/documentation/naming-conventions

翻译:dotnet编程大全

C#技术群 : 添加小编微信mm1552923,备注:进群!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最气人的数学家:文理双全智商还高,说话只说半句,解题只解半个,调戏人调戏了三百年还不够......

全世界只有3.14 % 的人关注了爆炸吧知识大家上学的时候有没有想过:在数学试卷上调戏阅卷人。想想小天,会都不会写,还调戏阅卷人?想都不敢想。但一个知乎大佬就做了。他居然用费马的原话作答:我已经想到了一个极佳的证明…

掌握这个姿势,女友不再叨叨叨

1 请收下我的膝盖2 正确姿势3 前世五百次的回眸 才换来今生的一次神同步4 论引体向上,你是不如我的5 教科书式的傲娇6 只有我最摇摆7 这是什么原理?你点的每个赞,我都认真当成了喜欢

ubuntu安装matlab2009,Ubuntu中安装Matlab2010a

Ubuntu中安装Matlab2010a一.前言:相信大家对于Matlab应该很熟悉吧,我就不多做介绍了。对于如何在Ubuntu中安装Matlab很多人都不懂,大家都是新手,可以理解。我自己本身就是一个菜鸟,所以决定写这篇文章&…

45岁,一个平凡大叔的异地打工生活

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创,首发于 【掘金】📢作者格言:生活在于…

用高等数学“铲雪”!这个200多年前的证明太厉害了,有城市用它省了2000多万..........

全世界只有3.14 % 的人关注了爆炸吧知识用高等数学清扫脚下路前几天,北京下了2021年的第一场雪。这让生活在广州的超模君羡慕不已,原本打算春节前去哈尔滨看个冰雕,结果由于各种原因一直都没成行。一个月前被关进小黑屋的设计师妹子刚好来自哈…

matlab排版形式是什么样子,工作型PPT,图文排版的4种常见样式

原标题:工作型PPT,图文排版的4种常见样式图片是PPT中最好用的一种元素,正所谓“一图抵过千言”。但要想让图片真正地发挥价值,图文排版的好坏非常关键。本期将聊聊4种图文排版的处理方法。这些方法也是我们日常工作中的PPT图文排版…

基于事件驱动架构构建微服务第15部分:SPA前端

原文链接 https://logcorner.com/building-micro-services-through-event-driven-architecture-part15-spa-front-end/在本教程中,我将展示如何使用angular构建SPA前端来发送命令和请求查询。SPA前端使用commandAPI发送命令(创建、更新或删除语音&#x…

BBC又一神作,豆瓣9.8分,美轮美奂的大自然不仅仅属于人类

总有那么一些人,满怀着对世界的好奇,不远万里不畏艰难去穿越世界上每一个角落,为我们呈现出仅凭我们自己绝无可能看到的世间真实与美好。今天给大家推荐一部BBC出品的一部纪录片,纪录片爱好者肯定听过:BBC出品&#xf…

想追身边的女孩?哥们我只能帮到你这份上了

1 接下来,就靠你自己了……2 不是女神就别想了3 你再来,我可撕票喽4 总有刁民想害朕。。5 每次我想偷偷溜出去玩,我妈就6 看看谁在偷懒你点的每个赞,我都认真当成了喜欢

C#内建接口:IEnumerable

这节讲一下接口IEnumerable。01什么是Enumerable在一些返回集合数据的接口中,我们经常能看到IEnumerable接口的身影。那什么是Enumerable呢?首先它跟C#中的enum关键字所表达的意思是不同的, 从翻译上来看:可枚举的,展开…

ubuntu,kali linux和windows三系统流水账——写给自己

我先说一下ubuntu和windows双系统安装的几种方法,最后总结kali linux的安装,想起什么写什么,所以有点乱。然后记录一下自己的使用过程中遇见的问题和解决的方法,还有我的个人建议。 我个人安装的是目前最新的ubuntu16.04LTS。wind…

一个富二代仅凭“1+1”就压制了全世界的数学家两个世纪......

全世界只有3.14 % 的人关注了爆炸吧知识在数学界,“11”是一个超级大难题,吸引了许多优秀的数学家去攻关打boss。但至今还未有人闯关成功。这位被众多数学家恨得牙痒痒的罪魁祸首就是——克里斯蒂安哥德巴赫。克里斯蒂安哥德巴赫1690年3月18日&#xff0…

Android框架之网络开发框架Volley

1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android 系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目…

史上最会抄的数学家!把阿拉伯数字直接抄进自己的书里,连中国几千年前的名著都惨遭毒手.........

全世界只有3.14 % 的人关注了爆炸吧知识大家都喜欢《蒙娜丽莎的微笑》,但你知道她为什么好看吗?《蒙娜丽莎的微笑》没错,她符合黄金分割法0.618原则嘛!但你知道这世界上还有一个数列版的黄金分割法的吗?这个数列就是斐…

求数组里面的最大值和最小值

题目&#xff1a; 求数组里面的最大值和最小值比如&#xff1a;数组 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5最大值是5&#xff0c;最小值是1代码实现&#xff1a; #include <stdio.h> int max,min; void getMaxAndMin(int a[],int n){int *q;qa;maxmin*…

【ASP.NET开发】.NET三层架构简单解析

这篇文章本来应该很早就写出来的&#xff0c;但是一直苦于自己的精神能力有限&#xff0c;而且已经到了我们学校的考试周&#xff0c;所以时间上还是有点紧迫。关键的一点就是&#xff0c;找不到合理的思路来写&#xff0c;思路没有的话&#xff0c;就算是再好的素材&#xff0…

C和C++里面常见错误和异常出现怎么解决总结(不断更新)

1、cannot open Debug/first.exe for writing 如下图: 原因:控制台没有关闭,不能写,因为编译的exe文件正在运行,而再次编译是要修改这个exe文件的,因为不让写,所以就抱着这个错。 解决办法:是看有没有运行编译后文件,如果正运行着,就将其关掉。 2、cannot conver…

有关[Http持久连接]的一切,卷给你看

上文中我的结论是&#xff1a; HTTP Keep-Alive 是在应用层对TCP连接进行滑动续约复用&#xff0c; 如果客户端/服务器稳定续约&#xff0c;就成了名副其实的长连接。目前所有的Http网络库都默认开启了HTTP Keep-Alive&#xff0c;今天我们从底层TCP连接和排障角度撕碎HTTP持久…

他从小把数学书当小说看,凭借一本书将全世界狠狠甩在身后,被誉为中国的牛顿...

全世界只有3.14 % 的人关注了爆炸吧知识你知道吗&#xff1f;我国也有牛顿哦。他就是魏晋时期的数学家——刘徽&#xff0c;人称“中国数学史上的牛顿”。刘徽沉迷学习公元225年&#xff0c;刘徽出生在山东滨州邹平市的一所农家小院里。从小&#xff0c;刘徽就表现得与别的孩子…