- 博客(24)
- 收藏
- 关注
原创 .netcore Swagger
1.新建netcore web api项目2.安装下列3个NuGet package3.在startup.cs的ConfigureServices方法里用AddSwaggerGen来添加服务在Configure里加上UseSwagger和UseSwaggerUI public class Startup { public Startup(IConfiguration configuration) { Configuration = c
2020-06-27 17:01:27 341
原创 TopShelf和Quartz实现Windows Service定时任务
Net Core 控制台应用NutGet安装TopShelf和Quartz包1.Job类继承Quartz.IJob接口,实现Excute方法using Quartz;using System;using System.IO;using System.Threading.Tasks;namespace TopShelfAndQuartz{ public class Jo...
2020-03-21 15:35:06 979
原创 生产者消费者模式,BlockingCollection
生产者消费者模式可以让生产者和消费者互不干扰,且有个缓存区解。生产者把数据放入缓冲区,而消费者从缓冲区取出数据,不必生产一个才能消费一个,消费完一个才能生产下一个。 class Program { static void Main(string[] args) { Task.Factory.StartNew(() =&g...
2019-03-11 21:21:02 922
原创 反射实现IOC(控制反转)
假设顶层Top类里要用到A,B类的实例 。如果Top类里直接new A,B对象,这样耦合度高,不易维护。我们可以用反射实现DI(依赖注入,和控制反转是一个意思)来解耦。将A B类注入到Top类里。下面例子写的比较简单namespace Test{ class Program { static void Main(string[] args) ...
2019-03-09 12:30:07 420
原创 string.CompareOrdinal(效率高),checked(检查溢出)
几种比较方法的效率 int num = 10000000; string str1 = "abcdaefvff"; string str2 = "abcdsafsafed"; Stopwatch stopwatch = new Stopwatch(); stopwatch...
2019-03-07 19:22:26 1014
原创 自定义特性Attribute
特性attribute就是一个类,可以应用在程序集,类,属性,方法等元素。在运行的时候通过反射获取特性attribute的信息。下面示例是对属性做Trim标记,可以在对象层面调用一次Trim(),就将标记了Trim特性的属性作Trim()处理。using System;namespace ConsoleApp1{ //定制特性,特性也是一个类,自定义特性须继承System...
2019-02-14 18:12:43 395
原创 自定义类型转换
class Program { static void Main(string[] args) { string name = "Tony"; Person p = name; Person p1 = new Person("Jack"); string nam...
2019-02-14 17:19:11 236
原创 《编写高质量代码改善C#程序的157个建议》笔记
**重写Equals时也应重写GetHasgCode**如果对象要作为Dictionary的Key值,那么重写Equals时也应重写GetHashCode。比如下列代码,人的身份ID一样应该就是同一个人,那么我们期望得到的输出是true,true。但是不重写GetHasgCode,得到的输出是true,false。因为Dictionary是根据先Key值的HashCode再根据Equals来查找...
2019-01-17 17:10:36 613
原创 反射,插件接口
先创建下图的一个窗体,插件下没添加项目,是留给反射加载.dll插件的。在debug目录下加一个Plugin文件夹,将插件的.dll文件放在此文件夹下可以生效。 给方案添加一个单独的项目来写规范插件的接口,因为需要生成一个.dll给写插件的人调用 接口的代码如下:using System.Windows.Forms;namespace NotePad.PluginInterfac...
2018-11-05 13:36:24 207
原创 笔记(线程)
Interrupt和Abortclass Program { static void Main(string[] args) { Thread thread = new Thread(Run); thread.Start(); Thread.Sleep(2500); ...
2018-08-06 16:07:00 281
原创 控制面板设置小数点和数字分组符合后容易引起的bug
先了解一下通过CultureInfo.CurrentUICulture和CultureInfo.InvariantCulture与控制面板设置的关系 控制面板设置如图 public partial class Form1 : Form { public Form1() { System.Globalization.Cul...
2018-05-16 17:49:01 911
原创 Parallel,Task
Parallel.Invoke(Run1, Run2); // 尽可能并行执行提供的每个操作。//执行 for(在 Visual Basic 中为 For)循环,其中可能会并行运行迭代。 Object obj = new object(); int num = 0; Parallel.For(0, 1000, i =>
2018-01-26 16:15:29 384
原创 自定义进度条控件(BackgroundWorker)
自定义了两种样式,如下图。代码如下ProgressForm:namespace ProgressForm{ public partial class ProgressForm : Form { private UserCircularProgress circularProgress; private UserProgressBar progress
2018-01-17 16:28:51 353
原创 生成CSV文件
CSV(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号) CSV文件比较简单,导出表格时格式没有要求的可以导出CSV文件用excel打开生成CSV文件代码。namespace CreatCSVFile{ public partial class Form1 : Form { public Form1()
2018-01-03 18:04:47 423
原创 Open XML SDK生成word
首先 下载Open XML SDK 安装后会有 DocumentFormat.OpenXml.dll ,项目中需引用。 下载的时候将 OpenXMLSDKTool.msi 也勾上一并下载,安装后会有反编译器 OpenXmlSdkTool.exe 可以帮助编写代码 如图: 写了一些封装数据的类,部分代码 class ReportType { public boo
2018-01-03 15:12:59 3284 1
原创 索引器,枚举器,迭代器,比较器
索引器实现for循环namespace ConsoleApplication1{ class Program { static void Main(string[] args) { People people = new People(); people[0] = "a"; pe
2017-10-11 16:38:57 243
原创 克隆(浅复制与深复制),序列化
克隆需实现ICloneable接口class Program { static void Main(string[] args) { ArrayList array =new ArrayList(); Person a = new Person(); a.name = "aaa"...
2017-09-20 17:59:15 271
原创 笔记(显示实现接口,实现IComparable,IComparer接口来排序)
显示实现接口 如果类继承两个接口中有相同方法,可用显示接口实现 class Program { static void Main(string[] args) { A a = new A(); a.run(); // "run" B b = new A();
2017-09-20 14:56:06 465
原创 动态添加dotNetBarManager的dockSite
先在设计界面(我这里用的用户控件)添加控件dotNetBarManager控件 如图所示点击Enaable Docunment Docking 会变成下图 然后打开对应的.Designer.cs文件,主要关注this.dotNetBarManager1.FillDockSite=的那个dockSite。 注释掉有下划线的两行代码(动态加载就是用这两行代码),或者在设计界面选中bar
2017-07-21 18:08:54 2064 1
原创 C#压缩解压(可任意选择多个文件夹,文件一起压缩);BackgroundWorker配合进度条的使用
如,下图操作,任意选择要压缩的文件夹,文件,设置压缩后保存的文件,点压缩按钮执行效果如下执行完的test1.zip压缩需要引用using ICSharpCode.SharpZipLib.Zip; 可在http://www.icsharpcode.net/opensource/sharpziplib/Default.aspx下载首先看BackgroundWorker初始...
2017-07-11 16:48:56 4217
原创 笔记(RemoveAll;DataGridView用linq查询;动态添加控件时闪烁问题)
2.DataGridView用linq查询IEnumerable<DataGridViewRow> emplist = this.dataGridEmp.Rows.Cast<DataGridViewRow>();//扩展方法,转换类型var query = emplist.Max(s => s.Cells[1].Value);//查询第二列的最大值3.动...
2017-05-16 10:29:20 363
原创 窗体之间传值(委托,事件,Owner,封装属性)
实现点击Form1的send按钮则打开Form2,并将Form1文本框的值传给Form2。点击Form2的OK按钮则关闭Form2并将文本框的值传回Form1。 点击send打开Form2并传值有多种方式 委托传值 可以在new Form2时将值传给Form2,这时需要更改Form2的构造函数来接收,由于在Form2中不能调用Form1的控件,所以更改Form1的文本框的方法写在Form1里,
2017-04-24 15:02:31 481
原创 利用资源文件实现窗体多语言
如图,将Form的Localizable设为True,然后选择需要的Language比如英语这时更改窗体控件的文本,Form下会出现.en-GB.resx资源文件,再更改Form的Language属性为中文简体,更改窗体控件的文本,Form下会出现.zn-CN.resx资源文件修改的控件的文本存在.en-GB.resx和.zn-CN.resx中,如下图:
2017-04-05 17:08:16 1253
原创 通过建立依赖关系使文件在VS中显示位置改变(比如.cs下显示其他.cs)
比如 需变成如下效果: 那么可以用文本方式打开项目的.csproj文件,将 改成 保存,最后重新加载项目即可。
2017-04-01 13:54:43 378
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人