
c#
文章平均质量分 57
梁萌
认真是一种态度
展开
-
vs程序集引用本地电脑文件
有个程序集引用的是本地文件,导致项目运行到其他电脑上时,出现找不到程序集的问题。在本地找到引用的程序集,右键属性,将‘复制本地’改为TRUE。原创 2023-02-15 18:37:27 · 479 阅读 · 0 评论 -
删除未使用的引用 Visual Studio 2019(16.10)新功能试用
当解决方案很小时,我们清楚地知道解决方案中使用了哪些项目引用和NuGet包,要想清理它们很容易。而对于大型的解决方案,有哪些包在使用中,开发人员很难找到它们,或者找起来可能很耗时。Visual Studio 2019(16.10)添加了“删除未使用的引用”命令,用于清理未用的项目引用和 NuGet 包。如果找不到此选项,请在“工具” > “选项” > “文本编辑器” > “C#” > “高级”中启用它开启此功能的步骤:未清理前:开始清理转载 2022-01-03 17:22:25 · 3107 阅读 · 2 评论 -
C#6.0新增nameof关键字的使用
声明一个变量,并打印出这个变量的值,可以这样写:int myVar = 10;Console.WriteLine("myVar" + " value is " + myVar.ToString());输出结果为:现在有了nameof这个关键字,可以将上面的写法进行更改,如下所示:int myVar = 10;Console.WriteLine(nameof(myVar) + " value is " + myVar.ToString());输出结果为:...原创 2021-07-15 22:44:33 · 1375 阅读 · 2 评论 -
c#常用数据结构学习总结
c#中常用数据结构有数组、链表、集合、哈希散列。数组包括:Array、ArrayList、List<T>链表包括:LinkedList、Queue、Stack集合包括:HashSet、SortedSet哈希散列包括:Hashtable、Dictionary数组:Array { Console.WriteLine("**************** Array 数组 *********************");原创 2021-07-08 19:23:10 · 963 阅读 · 1 评论 -
C#合并两个图片,并保存到本地
需求:从数据库中查询出两张图片的相对路径,其中一个为底图,另一个图片需附着在底图上,最终合成为一张图片并保存到项目的Test文件夹中,图片以公司名称分类,每个公司的图片放到一个文件夹中。数据库信息如下:代码实现: try { //数据库查询图片信息 using (OracleConnection conn = new OracleConnection(DefaultDBConnec原创 2021-06-24 15:34:55 · 1913 阅读 · 0 评论 -
微服务学习总结5(Ocelot+Polly+Consul)
网关除了可以做请求转发外,还可以做缓存功能。在自定已原创 2021-06-05 17:29:48 · 979 阅读 · 2 评论 -
微服务学习总结4(网关和consul结合)
qqqq原创 2021-06-05 12:39:04 · 1493 阅读 · 0 评论 -
微服务学习总结3(网关实现)
网关的作用是负责请求的转发,如下图所示:原创 2021-06-03 23:25:05 · 680 阅读 · 2 评论 -
微服务相关资料
https://www.cnblogs.com/diwu0510/p/11706263.html原创 2021-06-03 22:20:53 · 145 阅读 · 0 评论 -
c# JObject转换key值
JObject对象有多个key和value组成,先要将英文的key转为中文,封装了一个方法,用于对key值的转换。转换前JObject的值如下所示:原创 2021-06-02 11:24:52 · 2917 阅读 · 0 评论 -
微服务学习总结2(消费者调用consul)
consul的主要功能是服务的注册与发现。如下图所示:原创 2021-06-01 19:39:14 · 701 阅读 · 0 评论 -
C# 导出 Excel 的各种方法总结
https://www.cnblogs.com/Brambling/p/6854731.html转载 2021-05-31 14:40:46 · 2107 阅读 · 0 评论 -
微服务学习总结1(consul服务注册与发现)
微服务对应的就是单体式开发,单体开发和微服务的优缺点:单体式开发:优点:开发简单,集中管理,不会重复开发,没有分布式的管理和损耗。qi原创 2021-05-30 16:05:48 · 720 阅读 · 1 评论 -
.net使用log4net日志框架(记录到数据库)
记录下log4net日志框架在项目中的使用:1.通过Nuget安装Log4net程序包2.添加配置文件,配置日志记录的格式等信息log4net.config配置信息如下:<?xml version="1.0" encoding="utf-8"?><log4net> <!--type表示用什么类型记录日志 ADONetAppender代表用数据库记录--> <appender name="AdoNetAppender" t.原创 2021-05-23 14:59:51 · 3677 阅读 · 4 评论 -
.net创建Windows服务
Windows服务可以用于创建定时任务,在规定时间内执行特定的程序。比如在早上9点到下午5点调用第三方接口获取数据,就可以使用Windows服务来完成操作。参考文章:https://www.cnblogs.com/cncc/p/7170951.htmlhttps://www.cnblogs.com/buchizaodian/p/6160816.html1.在vs中新建一个项目,选择Windows服务:创建的项目结构,如下图所示:2.为服务添加安装程序点击ser..原创 2021-05-21 12:02:24 · 2595 阅读 · 1 评论 -
C#导出PDF
实现原理:将HTML代码转为pdf。实现步骤:1.项目引用NReco.PdfGenerator.dll类库。2.后台对HTML处理,转为pdf,关键代码如下:string htmlContent = "<html><span>这里就是HTML代码<span></html>";htmlContent = htmlContent.Substring(htmlContent.IndexOf("<html>"), htmlContent原创 2021-04-30 16:24:31 · 3310 阅读 · 1 评论 -
使用NuGet包管理器安装类库
1.在NuGet包管理器中找到想要的类库,然后安装。2.按照完成后会在项目中生成packages.config的配置文件,里面记录了NuGet按照的类库信息。在提交代码时,也要把这个配置文件提交,不然项目其他成员会无法获取到类库的引用。...原创 2021-04-29 09:27:47 · 555 阅读 · 0 评论 -
Quartz.Net实现定时调度学习总结
定时调度可以理解为定时执行某个方法或逻辑代码,Timer也可以实现类似的功能。Quartz就是启动定时任务的框架,直接在项目引用后就可以调用。准备工作:项目安装Quartz代码实现:1.声明Scheduler(作业调度池)2.声明JobDetail3.声明Trigger4.将JobDetail和Trigger添加到作业调度池中下面是详细的步骤:项目引用Quartz,使用NuGet包管理器安装,我安装的Quartz是3.0.7版本(不同的版本,对应的api调用方..原创 2021-04-05 17:22:59 · 847 阅读 · 0 评论 -
c#多线程Task学习总结2
声明方法DoSomeThingLong方法,用于模拟业务的执行过程。 public long DoSomeThingLong(string name) { Console.WriteLine($" 子线程 {name} 启动 {Thread.CurrentThread.ManagedThreadId.ToString("00")} 当前时间: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}");原创 2021-03-27 11:40:52 · 517 阅读 · 0 评论 -
c#多线程Task学习总结1
什么时候能用多线程? 任务可以并发操作的时候。多线程能干嘛? 提升程序执行速度,提供用户体验。声明方法DoSomeThingLong方法,用于模拟业务的执行过程。public long DoSomeThingLong(string name) { Console.WriteLine($" 子线程 {name} 启动 {Thread.CurrentThread.ManagedThreadId.ToString("00")} 当前时间: {DateTi.原创 2021-03-21 20:09:14 · 497 阅读 · 0 评论 -
c#设计模式学习总结(创建型)
https://www.cnblogs.com/abcdwxc/archive/2007/10/30/942834.html原创 2021-03-06 15:47:38 · 219 阅读 · 0 评论 -
c#中Lambda和Linq的关系
Lambda是实例化委托的快捷方式,本质是一个方法。Linq是基于委托的封装,实现逻辑解耦,代码重用。本质是一个帮助类库。所以,Lambda和Linq是没有什么直接关系的。原创 2021-01-28 19:10:54 · 582 阅读 · 0 评论 -
设计模式六大原则学习总结2
设计模式:面向对象语言开发过程中,遇到种种的场景和问题,提出的解决问题的思路。设计模式是解决具体问题的套路。设计模式六大原则:面向对象语言开发过程中,推荐的一些指导性原则,没有明确招数,而且经常会被忽视或者违背。目录1.依赖倒置原则2.接口隔离原则3.开闭原则1.依赖倒置原则定义:1.高层模块不应该依赖低层模块,二者应通过抽象依赖。2.抽象不应该依赖细节。3.细节应该依赖抽象。还可以总结为:面向抽象编程。从一个实例中感受下依赖倒置原则带来的好处:..原创 2021-01-24 13:23:51 · 153 阅读 · 1 评论 -
设计模式六大原则学习总结1
设计模式:面向对象语言开发过程中,遇到种种的场景和问题,提出的解决问题的思路。设计模式是解决具体问题的套路。设计模式六大原则:面向对象语言开发过程中,推荐的一些指导性原则,没有明确招数,而且经常会被忽视或者违背。目录1.单一职责原则:2.里氏替换原则:3.迪米特法则:1.单一职责原则:定义:类T负责两个不同的职责:职责P1,职责P2。当由于P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2发生故障。方法级别的单一职责原则:一个方法只负责一件事情(不同职.原创 2021-01-23 17:21:54 · 195 阅读 · 0 评论 -
c#委托学习总结
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。委托的声明:没有返回值,没有参数的委托public delegate void MyDelegate()有返回值,有参数的委托:public delegate string MyDelegate(int i);通常情况下使用.Net框架定义好的委托,无需自定义委托。Action:无返回值的泛型委托Action<int,string> 表示有传入参数int,string无返.原创 2021-01-19 20:22:26 · 216 阅读 · 0 评论 -
c#特性(Attribute)学习总结2
通过特性提供额外行为的实例:自定义特性做数据验证(效验属性值的大小和非空)学生类中有个QQ的属性,效验QQ不能小于100000(5位数),不能大于999999999999(12位数),并且QQ的属性不能为空。如果满足这些效验返回true,否则返回false。声明一个抽象类,所有的自定义特性都继承自这个抽象类,为了确保自定义特性都实现数据效验的方法。 /// <summary> /// 抽象类 基类 /// </summary> pub.原创 2021-01-18 19:11:39 · 501 阅读 · 0 评论 -
c#特性(Attribute)学习总结1
特性是用于在运行时传递程序中各种元素(类、方法、结构、枚举、组件等)的行为信息的声明性标签。官方的解读不好理解,举个常用的例子,平时会在类的上面加上[Serializable],Serializable就是TestClass这个类的一个特性,它表示这个类是可以被序列化的。如下图:.Net框架提供两种类型的特性:预定义特性和自定义特性。预定义特性一:Obsolete这个预定义特性标记了不应被使用的程序实体。比如某个方法将被废弃,不提倡再次使用,则可以在方法上加上这个特性,那么在调用时.原创 2021-01-17 19:52:12 · 495 阅读 · 0 评论 -
c# 接口和抽象类学习总结
下面实例定义了一个抽象类和一个接口,抽象类中定义一个手机的属性和方法,接口定义一个玩游戏的方法。抽象类代码: //抽象类是一个父类+约束 父类是为了实现代码重用 约束是为了多态变化 单继承 is a public abstract class BasePhone { public int Id { get; set; } public string Name { get; set; } public string Branch {原创 2021-01-17 12:15:01 · 700 阅读 · 2 评论 -
.NET反射学习总结2
已知程序集名称和类型名称创建反射对象后,直接调用方法的常见形式:创建一个反射测试类:using System;namespace DB.MySql{ /// <summary> /// 反射测试类 /// </summary> public class FlectionTest { /// <summary> /// 构造函数 /// </summary>原创 2021-01-09 21:35:11 · 121 阅读 · 0 评论 -
c#扩展方法的使用
通俗的讲,扩展方法就是可以对String,Int,DateTime,DataRow,DataTable等这些类型的基础上增加一个或多个方法,使用时不需要去修改或编译类型本身的代码。示例一:对时间类型变量进行格式化显示常规写法:DateTime now = DateTime.Now;string time = now.ToString("yyyy-mm-dd hh:mm:ss");扩展方法:定义一个扩展方法using System;namespace DB.MySql.原创 2021-01-09 17:22:48 · 501 阅读 · 0 评论 -
.NET反射学习总结1
程序运行图解:理解反射之前,先理解下程序的执行过程,如下图所示:程序员写了高级语言(c#、vb等等),经过编译器编译后,生成DLL或者EXE文件,文件经过JIT编译成机器码,最终被计算机执行。如果再细分的话,DLL/EXE文件中包含了元数据和中间语言,中间语言经过JIT编译成机器码。元数据可以理解为数据清单,当CLR执行DLL/EXE时,先去查找元数据,元数据中描述了DLL/EXE的详细信息,比如包含了哪些命名空间,命名空间中有哪些类,类中有哪些方法,有哪些属性。反射概念:.原创 2021-01-01 14:47:54 · 211 阅读 · 0 评论 -
c#泛型类和泛型方法使用实例
泛型类:using System;namespace ThreadDemo{ class Program { static void Main(string[] args) { MyStack<int> myStack = new MyStack<int>(3); myStack.Push(1); myStack.Push(2);原创 2020-10-07 16:43:42 · 1181 阅读 · 0 评论 -
c# Linq用法实例
using System;using System.Collections.Generic;using System.Linq;namespace LinqStudyDemo{ class Program { static void Main(string[] args) { //初始化武林高手 var masters = new List<MartialArtsMaster>(){ .原创 2020-10-05 12:34:00 · 1114 阅读 · 1 评论 -
c#请求Web Service 写法
/// <summary> /// 请求webservice接口 /// </summary> /// <param name="url">请求地址</param> /// <param name="sendData">请求参数</param> /// <returns>webservice接口返回信息</returns> ..原创 2020-08-21 16:03:20 · 318 阅读 · 0 评论 -
c#虚方法和抽象方法的使用
虚方法虚方法存在于相对于需要实现多态的子类的父类当中,同时也是实现多态的最基本的方法。具体语法:父类的方法,用virtual修饰,表示虚方法。继承它的子类,在内部用override进行重写。下面进行案例分析:猫和狗都是动物,他们都会叫,但是叫声不一样。提取出相同的部分,即叫声,将叫声实现为多态。新建父类:Animal,新建子类Cat、Dog,代码如下:namespace ConsoleApplication1{ class Program { st转载 2020-08-14 15:50:10 · 1023 阅读 · 0 评论 -
c#判断字符串是否为数字或日期
c#判断字符是否为日期: /// <summary> /// 判断字符是否为日期 /// </summary> /// <param name="value">传入的值</param> /// <returns>bool类型</returns> public bool IsDate(string value) { .原创 2020-05-11 14:51:32 · 979 阅读 · 0 评论 -
c#实现文件转base64和base64转文件(文件为任意格式)
文件转base64字符串,文件可以为任意类型,代码如下: /// <summary> /// 文件转base64 /// </summary> /// <returns>base64字符串</returns> public string FileToBase64Str...原创 2020-03-27 08:08:41 · 16337 阅读 · 2 评论 -
c#正则判断字符串是否是日期格式
public static bool IsDate(string strDate) { Regex reg = new Regex(@"((19|20)[0-9]{2})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])"); return reg.IsMatch(strDate);...原创 2020-03-13 17:37:12 · 1475 阅读 · 0 评论 -
.NET中一个页面有多个Repeater控件的处理方法
一个页面有时候需要显示两个不同的table信息,这时候就要使用两个Repeater控件用来一次显示一组数据项.如上面的两个图片所示,一个页面中的两个tab显示不同的信息.代码实例:<asp:Repeater runat="server" ID="rptList1"> <H...原创 2019-05-06 10:35:39 · 585 阅读 · 0 评论 -
c# 提示表没有主键
在使用DataTable.Find()方法时,提示表没有主键.解决方法是为表设置一个主键.DataTable dt = GetDataSource();dt.PrimaryKey=new DataColumn[] {dt.Columns[0]};//设置第一列为主键DataRow row = dt.Rows.Find("101");//获取DataTable中主键值为101的一行数据...原创 2019-04-30 08:40:57 · 3136 阅读 · 0 评论