随笔分类 - .NET
摘要:BindableLayout是一种用于数据绑定和显示的控件,它可以绑定一个集合数据源,并且可以根据指定的数据模板来呈现数据。BindableLayout在MAUI中的使用类似于ListView或CollectionView,但是具有更高的灵活性和可定制性。 BindableLayout的优点包括:
阅读全文
摘要:FlexLayout是MAUI中的一种布局控件,它使用CSS的Flexbox模型来进行布局,可以灵活地定位和调整控件的大小、位置和排列方式。 Flexbox是一种弹性盒子布局模型,能够自适应容器的大小,可以在不同的屏幕尺寸和方向下保持一致的布局效果。FlexLayout允许使用多个子元素来组成复杂的
阅读全文
摘要:AbsoluteLayout可以根据 X 和 Y 坐标放置元素,使其相对于其父元素的左上角位置对齐。允许用户指定控件在屏幕上的确切位置。与其他布局不同,AbsoluteLayout不依赖于控件的大小和位置。而是根据坐标将控件定位在指定的位置。 下面是一个使用AbsoluteLayout布局的简单示例
阅读全文
摘要:Grid是一种布局,它将子级组织成行和列,这些行和列可以有成比例或绝对大小。 默认情况下,Grid 包含一行和一列。 此外, Grid 可用作包含其他子布局的父布局。 Grid的主要特点: 灵活的行和列定义:可以通过指定行和列的数量以及它们的大小和比例来自由定义Grid的结构。 自适应宽度和高度:可
阅读全文
摘要:StackLayout:可以将子元素堆叠在一起,可以垂直或水平堆叠。 HorizontalStackLayout:在一维水平堆栈中组织子视图,比StackLayout性能高。 VerticalStackLayout:在一维垂直堆栈中组织子视图,比StackLayout性能高。 默认情况下,Stack
阅读全文
摘要:MAUI框架提供了多种布局(layout)选项,可以让大家轻松地定位和排列界面元素。 以下是一些常见的MAUI布局: StackLayout:可以将子元素堆叠在一起,可以垂直或水平堆叠。StackLayout 可用作包含其他子布局的父布局。 HorizontalStackLayout:在一维水平堆栈
阅读全文
摘要:MAUI (Multi-platform App UI) 是一个跨平台的 UI 框架,用于创建在多个平台上运行的本机用户界面。它是 Microsoft 推出的一个开源项目,它基于.NET和.NET MAUI技术栈,可以使用 C# 或 XAML 编写代码,并运行在Windows、macOS、iOS、A
阅读全文
摘要:有时我们需要计算两个时间点相差的年份和月份,比如从2022年1月到2023年3月,相差多少年多少月。 但TimeSpan(链接)只提供了总计天数、总计小时、总计分钟等等的结果,并没有提供总计年、总计月(由于它表示一个不引用特定起点或终点的常规间隔,因此不能用年和月来表示,这两者都有可变的天数。)。那
阅读全文
摘要:我们的代码中有时候会需要调用其他平台的接口,在做单元测试的时候,我们不需要测试这些第三方接口是否生效,接口是否有问题,但是如果我们直接调用第三方接口,这些接口的错误又会影响我们正常的测试工作,所以我们应该怎么办呢?我们可以模拟这些接口,让其返回我们期待的返回结果,这样我们就可以顺利的进行内部代码的测
阅读全文
摘要:在我们写SQL时,经常会遇到IN、NOT IN这样的查询条件,这时后面的条件需要一个参数列表。 我们期待可以根据数据列表[1,3,5],动态生成多个参数,即@Parameter1=1,@Parameter2=3,@Parameter3=5。 我们可以写一个扩展方法实现它: public static
阅读全文
摘要:public static void Run() { //return 1 var t1 = TestClass.Test1(); //return 2 var t2 = TestClass.Test2(); var state = ReplaceMethod(typeof(TestClass).G
阅读全文
摘要:有时我们单元测试的时候,期待我们通过Nsubstitute模拟的方法可以根据不同的入参、不同的逻辑,返回不同的结果。 事实上,Nsubstitute 支持通过Function的方式返回指定值。 例子代码如下 teacherManager .Insert(Arg.Any<Teacher>()) .Re
阅读全文
摘要:我们的代码并不是一个方法可以完成的,我们通常会设置很多层级,比如Controller、ApplicationService、DomainService、Repository,这个时候,单元测试应该怎么写呢?我们应该模拟下层方法(接口)的返回结果,有且只测试当前方法的代码逻辑。 下面以NSubstit
阅读全文
摘要:之前我们介绍了如何在单元测试中设置优先级,以一定的顺序执行单元测试。但根据对单元测试排序和.NET Core 和 .NET Standard 单元测试最佳做法我们可以知道,这并不是最佳做法。 那么最佳做法是什么呢?我们应该保证每一个单元测试都是自包含的。 以StudentServiceWithPri
阅读全文
摘要:有时候我们期待以固定的顺序执行测试,比如先新增学生信息,再修改学生信息,再查询、再删除。在这种设计下,如果顺序发生变化,可能导致错误,比如修改一个不存在的学生信息,会导致测试不通过。 这里以Xunit为例,来看一下如何实现顺序执行单元测试。 直接谷歌xunit Priority unit test,
阅读全文
摘要:我们在计算数字时,有时会需要保留几位小数,有时需要四舍五入,有时候需要直接舍弃后面的小数,有时候需要进一位,其实C#的Math.Round()方法有提供相应的选项,即MidpointRounding。 我们翻阅Math.Round Method可以看到,Math.Round()有多参数重载。 其中M
阅读全文
摘要:摘抄自Making ConcurrentDictionary GetOrAdd thread safe using Lazy 普通使用 private static int runCount = 0; private static readonly ConcurrentDictionary<stri
阅读全文
摘要:在OnRequestCompleted方法中可以获得原始查询和查询结果 关键代码如下 ElasticClient elasticClient = new ElasticClient(new ConnectionSettings(new Uri(address)) //打印请求、回复,可能影响性能 .
阅读全文
摘要:本文介绍C#使用Elasticsearch的基本方法,并提供一个demo 以下说明中包含的http调用,为ElasticsearchTestController中编写的测试方法 初始化 引用NEST 创建ElasticClient对象 ElasticClient elasticClient = ne
阅读全文
摘要:最近遇到一个问题,希望程序可以支持自定义表达式的计算, 比如A(p1) & B(p2,p3) || C(),计算这个表达式是true还是false,进而去完成其他工作 而到运行到这里的时候,程序才会知道具体的表达式是什么,表达式和参数是通过定义表达式的数据传进来的,是不固定的 数据结构类似 inte
阅读全文