在.Net框架搭建讲解中,提到了代码自动生成来减少开发人员人工作量,比如数据库对应的Model、最基层的Repository类和接口等等,除了类名不一样,其他都一样,没必要再手写一遍。
我在这里,介绍使用CodeSmith模版生成Model类,其他的都一样,拿到表名和各字段名、字段类型等等,想怎么生成就能怎么生成。
首先,在硬盘中,建立一个文件夹,用来放模版文件,比如:
F:pukuiminInjectExampleExampleCodeSmithTemplate
在.Net框架搭建讲解中,提到了代码自动生成来减少开发人员人工作量,比如数据库对应的Model、最基层的Repository类和接口等等,除了类名不一样,其他都一样,没必要再手写一遍。
我在这里,介绍使用CodeSmith模版生成Model类,其他的都一样,拿到表名和各字段名、字段类型等等,想怎么生成就能怎么生成。
首先,在硬盘中,建立一个文件夹,用来放模版文件,比如:
F:pukuiminInjectExampleExampleCodeSmithTemplate
.Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持。最近看到一些项目中还在自定义xml文件做程序的配置,所以忍不住写一篇用系统自定义配置的随笔了。
如果你已经对自定义配置了如指掌,请忽略这篇文章。?
言归正传,我们先来看一个最简单的自定义配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="simple" type="ConfigExample.Configuration.SimpleSection,ConfigExample"/> </configSections> <simple maxValue="20" minValue="1"></simple> </configuration>
在配置文件中使用自定义配置,需要在configSections中添加一个section元素,并制定此section元素对应的类型和名字。然后再在configuration根节点下面添加此自定义配置,如上例中的simple节点。simple节点只有两个整形数的属性maxValue和minValue。
大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换
//EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls格式
整理了一下表达式树的一些东西,入门足够了
先从ConstantExpression 开始一步一步的来吧 它表示具有常量值的表达式
我们选建一个控制台应用程序
ConstantExpression _constExp = Expression.Constant("aaa",typeof(string));//一个常量 //Console.Writeline("aaa"); MethodCallExpression _methodCallexp=Expression.Call(typeof(Console).GetMethod("WriteLine",new Type[]{typeof(string)}),_constExp); Expression<Action> consoleLambdaExp = Expression.Lambda<Action>(_methodCallexp); consoleLambdaExp.Compile()(); Console.ReadLine();
下边的MethodCallExpression你也许不知道是什么回事,不要急我下边会详细讲的,这相当于
多线程运行,主线程等待。
private static void Test2() { var waits = new List<EventWaitHandle>(); for (int i = 0; i < 10; i++) { var handler = new ManualResetEvent(false); waits.Add(handler); new Thread(new ParameterizedThreadStart(Print)) { Name = "thread" + i.ToString() }.Start(new Tuple<int, EventWaitHandle>(i, handler)); } WaitHandle.WaitAll(waits.ToArray()); Console.WriteLine("All Completed!"); Console.Read(); } private static void Print(object param) { var p = (Tuple<int, EventWaitHandle>)param; Console.WriteLine(Thread.CurrentThread.Name + ": Begin!"); if (p.Item1 == 2) Thread.Sleep(1200); else if (p.Item1 ==1 ) Thread.Sleep(2000); else Thread.Sleep(1000); Console.WriteLine(Thread.CurrentThread.Name + ": Print" + p.Item1); Console.WriteLine(Thread.CurrentThread.Name + ": End!"); p.Item2.Set(); }
测试项目结构:
需求:线上运行的job,有时间可能因为数据库异常、内存不足或者是内部其他异常导致整个进程退出,是偶发事件,但是如果进程停止,业务数据没处理积压起来,会影响业务。为了能自动监控并启动这种意外停止的进程,写了一个程序监控,每分种检查一遍,然后自动处理,实际上是非常有用的。
itemcontractprice数量1万左右,每条itemcontractprice 插入5条日志。
修改系统模版路径:
C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDEItemTemplatesCacheCSharpCode2052
Powered By Z-BlogPHP 1.7.3
Copyright 2024-2027 pukuimin Rights Reserved.
粤ICP备17100155号