.NET
文章平均质量分 70
罗马苏丹默罕默德
寇可往,我亦可往
展开
-
BlazorServer中C#与JavaScript的相互调用
虽然BlazorServer中推荐使用C#在razor页面中的替代JavaScript来完成逻辑的编写,但当需要使用第三方的javascript文件/组件里的内容时,则难免要在C#中调用其方法或对象。反之当你的(用到第三方组件的)Javascript代码想要和后台交互时,则需要调用C#的代码。好在BlazorServer中这两种通信都是支持的。下面将介绍其具体的实现方式。原创 2023-08-23 20:36:53 · 1842 阅读 · 0 评论 -
CS1988|C#无法在异步方法中使用ref,in,out类型的参数的问题
参数,因为当控件返回到调用代码时,该方法可能尚未完成。对引用变量的任何更改都对调用代码不可见,从而导致 CS1988 错误。BlazorServer的场景中推荐使用异步方法,使用ref,out,in为参数前缀则报错CS1988。如果要在async方法中获取一些返回值,请直接加在的Task的返回中。如果是一些运行时间长的方法,则可能造成一些响应不及时的效果。将需要用到的参数作为Task的返回,即。应避免使用引用类型为参数来充当返回值。现有Blazor页面如下。延申:引用变量的可见性。在方法的运行时间内,原创 2023-08-17 11:47:57 · 1816 阅读 · 0 评论 -
.NetCore录屏生成Gif动图程序(Form)的开发过程[代码已上传GitCode]
桌面录制Gif程序https://gitcode.net/jamenu/recorddesktopgif原创 2023-07-14 17:07:39 · 281 阅读 · 1 评论 -
BlazorServer非鉴权的登录和注册
BlazorServer入门,参数的绑定与跳转原创 2023-07-05 15:52:38 · 639 阅读 · 0 评论 -
Dapper存取Blob类型数据
blob类型是数据库用于保存二进制文件的一种类型,可以将文件存储到数据库的表中。ADO.NET原生的方法操作blob类型需要一个OracleBlob类作为中介,通过它来获取流或是字节。然后再进行下一步的操作,如果要获取的数据比较多,则比较繁琐。🚩 Tip: 如需通过ORM对象来获取Blob列,只需要将Blob列的对应类型设置为和上例中的byte[]即可。而Dapper的方法更加简单,直接用byte[]来传递二进制文件,操作则更加简单。原生的Ado.Net存取Blob比较繁琐,通过上面的例子可以看出,原创 2023-05-30 08:28:01 · 626 阅读 · 0 评论 -
如何在Oracle存储过程发生异常时获取out类型参数的值
✈️有一些关于金额和时间的精确且量大的计算需要在存储过程中完成。存储过程中有一些自定义的异常。并且将在RAISE前通过out类型的参数将详细的异常原因返回。但是在通过Csharp的调用中,发现了很多的问题。需要书面总结。原创 2023-05-12 15:55:59 · 1105 阅读 · 1 评论 -
关于修改压缩包内的文件(Excel...)内容的解决方法
要避免这种情况,你必须新建压缩包,把Excel一个个修改后直接存在新的压缩包里,毕竟上面的代码改动后还是被流塞进了原来的文件,故会造成一些不知名的损坏。在他下载对应压缩包的接口中直接修改压缩包内的Excel文件,这种方法比较直接且好像可行。虽然在Excel自动的修复后可以使用,但终究是不能使用这种方法的。在他的接口逻辑里直接在拆分后直接设置自动列宽…如果能在压缩前就修改完成就不需要修改压缩包内的文件。如果能在压缩前就修改完成就不需要修改压缩包内的文件。如果能在压缩前就修改完成就不需要修改压缩包内的文件。原创 2023-04-12 10:30:27 · 1589 阅读 · 0 评论 -
关于Oracle的Group by于Date列控制精度的方法
PS:这样并不能彻底的解决问题,因为解决了跨秒造成的时间分组错误,但是无法解决跨分钟的,如此还可以向下推(虽然可能性极小)为了硬凑一个列的结果,所以将该Date列也放入Group by 的列中。需要通过一个分组的列来对一张/多张表的查询结果进行分组,其中一个Date列可以用于组合分组,且。从结果看很明显,副表的记录create-time的一秒间隔造成了分组错误(程序执行的间隔)本该是一组的结果被显示为不同的两组结果(单组的ID却一样)一天后问题出现,测试环境的查询结果中。精度的可选参数如下表。原创 2023-03-14 17:01:01 · 527 阅读 · 0 评论 -
使用RabbitMQ让C#项目和Java项目互相发送和接收消息
PS:这只是一个测试,rabbit是在本地的环境,先开启rabbitMQ的服务器代码是直接拿的RabbitMQ官网里的,可以直接拿来用Java的Customer结果先运行C#的Provider,产生了一条消息再启动Java的Customer消息被消费掉了。反过来也很简单,只需要注释Java的接收代码,添加发送消息的代码即可C#的接收也同理...原创 2022-06-11 20:29:19 · 413 阅读 · 0 评论 -
奇怪的要求,判断集合元素的属性值是否有重复
要求导入一个EXCEL,每一行的值都封装到一个对象中,最后导到数据库里去,因为某些业务要求,某列不能出现重复的值(所以在存到集合里去后再检查一下),思路还是比较简单,单独拿出集合中那个指定属性的所有值作为另一新集合,再循环新集合中用原对象集合的属性值计算Count出现次数即可,大于定于2就可以定义为重复。当时在C#中的实现(使用LINQ)internal class TheOneTest{ public int ID { get; set; } public string Nam.原创 2022-05-26 11:27:53 · 410 阅读 · 0 评论 -
SqlSugar初体验|比EFCore更优秀
前言: 之前看微软的文档学了一会EFCore,当时觉得还不错,但是在工作中也没有使用。然后前段时间终于要答辩完了,也没有去总结,写点什么。反正趁作为学生身份最后的几天玩几天也无所谓了。首先,SqlSugar的官网:https://www.donet5.com/官网有详细的文档,也有相关的论坛,如果有问题可以到里面讨论,1.迁移与逆向迁移在微软的文档中喜欢用这个词,其实意思就是把Model映射到数据库生成表。(建表)反向迁移就是从数据库的表都读出来生成对应的Model下面是一些和其他的框原创 2022-05-17 23:06:54 · 11647 阅读 · 0 评论 -
从观察者模式过渡到event类型
前言:在笔者短暂的.NET编程时间中(FCK实习的这三个月),见过的event类型的使用次数一只手能数的过来.之前一直不是很明白,直到到到这一篇文章,C#事件的使用让我觉得从观察者/发布订阅的设计模式来理解能让事情变得更简单**一.最简单的发布和订阅/观察者的形式为了小白能够理解什么是观察者/发布订阅的概念,还是有必要浪费口舌表述一下如果对设计模式想做更深入的了解可以参考这个网站https://refactoringguru.cn/1.概念的表达观察者模式的表述一般是以某个组件为主体原创 2022-01-23 20:29:28 · 231 阅读 · 0 评论 -
在ASP.NET CORE项目中使用AutoFac设置AOP的Redis缓存
1.创建一个ASP.NET CORE项目先创建一个asp.net core项目,可以是WebAPI也可以是MVC或者其他的形式,这并没有关系这里以WebAPI项目举例导入相关的依赖包需要用到AutoFac和stackExchange.redis和Newtonsoft.JSON当然,这个测试可以不使用数据库,但为了更真实一些,我需要加上SqlClinet.Data去连接测试用的SqlServer数据库...原创 2022-01-19 12:58:29 · 1028 阅读 · 0 评论 -
Dapper的效率问题的总结
前言:Dapper是一款非常方便的轻量级的ORM工具,这里放一个它的文档:Dapper帮助文档它拓展了IConnection接口的方法,使其能够查询Model的List,不需要提前的Mapper设置,也支持多种写入参数的方式与其他ORM框架相比,确实很方便.但在实际的使用中,当数据量很大时,它的执行效率比原生的ADO.NET低了很多倍.问题的发现有需求要把大量的数据查出然后导入ExceL中,开始是使用的Dapper进行List查询,大概在执行上花了2分钟左右(只是需要的数据的一部分)后来原创 2022-01-14 16:40:21 · 1617 阅读 · 0 评论 -
AutoFac的AOP的实现以及和SpringAOP方式的对比
前言:AutoFac的AOP和Spring的AOP一样都是基于动态代理的设计模式(废话)其中Spring的动态代理有两种方式Dynamic ProxyJDK在1.5版本提供的原生动态代理,主要为InvocationHandler接口(切面)及产生代理类的Proxy类(代理对象PS:不是被代理对象) ,其本质是基于接口的生产方式,如果被代理类没有实现任何接口则无法使用CGLib 则是通过子类生产代理对象,如果被代理类被final修饰,则无法产生代理现在的Spring已经支持原创 2022-01-07 13:57:13 · 1000 阅读 · 0 评论 -
AutoFac多个实现类中获取指定实现类的三个方法
一个业务接口有多个实现类的情况是很多的,如果我们都讲他们配置进容器,那么当要找到特定的实现类就会有些麻烦了这里总结几种方法去获取指定的实现类1.把所有实现类作为IEumnable集合都注入进来public interface IService { void DoSomething(); } public class HumanService : IService { public void DoSomething() { Console.Wr原创 2022-01-06 23:26:41 · 1722 阅读 · 1 评论