随笔分类 -  C#

摘要:这个例子展示了如何转换整形数字的字节顺序,该方法可以用来在little-endian和big-endian之间转换。说明:Windos(x86,x64)和Linux(x86,x64)都是little-endian操作系统Big-Endian:一个WORD中的高位的Byte放在内存中这个WORD区域的... 阅读全文
posted @ 2016-01-21 16:58 Lyghost 阅读(2737) 评论(0) 推荐(1)
摘要:1 /// 2 /// 压缩图片 3 /// 4 /// 图片字节数组 5 /// 压缩质量0-100之间,数值越大质量越高 6 /// 7 public static byte[] Compre... 阅读全文
posted @ 2015-10-14 15:42 Lyghost 阅读(260) 评论(0) 推荐(0)
摘要:1 /// 2 /// 网络流转换为Byte数组 3 /// 4 /// 5 /// 6 public static byte[] ReadFully(Stream stream) 7 { 8 ... 阅读全文
posted @ 2015-09-15 16:52 Lyghost 阅读(1301) 评论(0) 推荐(0)
摘要:utils.ToLog.WriteLog(AboutConfig.LogPath, "\r\n方法:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + "." + System.Reflection... 阅读全文
posted @ 2014-07-03 16:47 Lyghost 阅读(188) 评论(0) 推荐(0)
摘要:最近在编写一套开发框架结构主要应用.Net 3.5以上的框架开发与应用。在此框架中应用了较多的泛型。下面来讲讲对泛型的实例化,以代码为例,如:public class A{ }public class B{ public static T Get() { //在这一块如何实例化T这个对象呢?如果用default(T)这个是不行的。只能做一个null值处理。 }}以上的方法就是遇到最麻烦的问题。一直以来都以为default(T)就可以实例化T这个对像,其实不然,这个只能起一个null值的作用。如果要解决以上的问题现在有两种方法:一、在使用泛型的类后面加入一个 where T : new(),.. 阅读全文
posted @ 2014-03-28 12:17 Lyghost 阅读(235) 评论(0) 推荐(0)
摘要:转义大括号左大括号和右大括号被解释为格式项的开始和结束。因此,必须使用转义序列显示文本左大括号或右大括号。在固定文本中指定两个左大括号 ("{{") 以显示一个左大括号 ("{"),或指定两个右大括号 ("}}") 以显示一个右大括号 ("}")。按照在格式项中遇到大括号的顺序依次解释它们。不支持解释嵌套的大括号。解释转义大括号的方式会导致意外的结果。例如,考虑要显示一个左大括号、一个格式化为十进制数的数值和一个右大括号的格式项“{{{0:D}}}”。但是,实际是按照以下方式解释该格式项:前两个左大括号 (&quo 阅读全文
posted @ 2014-01-03 16:12 Lyghost 阅读(2761) 评论(0) 推荐(0)
摘要:1 public static string SubstringByCN(string strInput, int begin, int length) 2 { 3 if (!Regex.IsMatch(strInput, "[\u4E00-\u9FA5\uF900-\uFA2D]", RegexOptions.IgnoreCase)) 4 { 5 if (strInput.Length = length)22 break;23 ... 阅读全文
posted @ 2013-10-23 10:23 Lyghost 阅读(750) 评论(0) 推荐(0)
摘要:1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Linq.Expressions; 6 7 namespace Test 8 { 9 /// 10 /// 一個老外寫的擴充Expression方法的靜態類別,可以解決上面冗長的程式碼11 /// 12 public static class DynamicLinqExpressions//注意static靜態型別13 {14 ... 阅读全文
posted @ 2013-09-25 11:33 Lyghost 阅读(1275) 评论(0) 推荐(0)
摘要:1 /// 2 /// 截断字符串 3 /// 4 /// 最大长度 5 /// 原字符串 6 /// 7 public static string CutStr(int maxLength, string str) 8 { 9 string temp = str;10 if (Regex.Replace(temp, "[\u4e00-\u9fa5]", "zz", RegexOptions.IgnoreCase).Length... 阅读全文
posted @ 2013-09-10 13:52 Lyghost 阅读(604) 评论(0) 推荐(0)
摘要:List artList=new List();artList=artList.OrderBy(s => Guid.NewGuid()).Take(5).ToList();//随机排序取前5条 阅读全文
posted @ 2013-09-04 14:29 Lyghost 阅读(731) 评论(0) 推荐(0)
摘要:目前很多种类的浏览器中都有代理服务器的设置,用户可以通过浏览器自定义更换自己的IP,实现在线代理翻(河蟹)墙浏览网页。而在.NET中,亦可以通过调用API函数InternetSetOption来实现自定义代理IP的设置。。首先引用System.Runtime.InteropServices名字空间:usingSystem.Runtime.InteropServices;接着引入"wininet.dll"库文件,并定义IP代理设置方法: 1 #region 在线代理 2 public struct Struct_INTERNET_PROXY_INFO 3 { 4 ... 阅读全文
posted @ 2013-07-29 15:05 Lyghost 阅读(505) 评论(0) 推荐(0)
摘要:1 public static string Md5Sum(string strToEncrypt) 2 { 3 System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding(); 4 byte[] bytes = ue.GetBytes(strToEncrypt); 5 6 // encrypt bytes 7 System.Security.Cryptography.MD5CryptoServiceProvider md... 阅读全文
posted @ 2012-12-16 15:05 Lyghost 阅读(548) 评论(0) 推荐(0)
摘要:1、Assembly.LoadFile只载入相应的dll文件,比如Assembly.LoadFile("abc.dll"),则载入abc.dll,假如abc.dll中引用了def.dll的话,def.dll并不会被载入。 Assembly.LoadFrom则不一样,它会载入dll文件及其引用的其他dll,比如上面的例子,def.dll也会被载入。2、用Assembly.LoadFrom载入一个Assembly时,会先检查前面是否已经载入过相同名字的Assembly, 比如abc.dll有两个版本(版本1在目录1下,版本2放在目录2下),程序一开始时载入了版本1,当使用Ass 阅读全文
posted @ 2012-12-07 10:51 Lyghost 阅读(226) 评论(0) 推荐(0)
摘要:1 public void PositionFile(string sFileFullName) 2 { 3 if (!System.IO.File.Exists(sFileFullName)) return; 4 5 System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("Explorer.exe"); 6 //string file = @"c:/windows/notepad.exe"; 7 ... 阅读全文
posted @ 2012-11-10 21:25 Lyghost 阅读(630) 评论(0) 推荐(0)
摘要:在某些项目中,需要采用控制台程序,但是又不需要通过dos窗口进行交互,同时打算隐藏掉难看的控制台窗口。实现的方法很多,有的是修改链接命令。我采用的方法略有些麻烦,首先是给窗口命名,之后找到该窗口指针,之后再调用winAPI隐藏窗口。程序如下: 1 class Program 2 { 3 [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)] 4 static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow); 5 阅读全文
posted @ 2012-11-08 17:39 Lyghost 阅读(4856) 评论(0) 推荐(0)
摘要:今天在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,2 阅读全文
posted @ 2012-11-07 16:54 Lyghost 阅读(157) 评论(0) 推荐(0)
摘要:在此,以添加"aricc”协议为例。一、首先,编写一个支持aricc协议的程序。我们就使用C#来写一个示例程序吧。1、新建一个windows应用程序。2、在Form窗体上添加一个TextBox控件。3、修改Form.cs代码为如下所示: 1 public partial class Form1 : Form 2 { 3 public string cmd; 4 public Form1() 5 { 6 InitializeComponent(); 7 } 8 9 private v... 阅读全文
posted @ 2012-10-23 21:03 Lyghost 阅读(855) 评论(0) 推荐(0)
摘要:很多时候,我们的程序是通过网络通信(如TCP或者UDP协议+端口),而将制作好的程序安装包给客户用时,发现会出现不能通信的现象(或者在这台电脑是可以的,却在另一台不可以),原因是防火墙阻止了,需要添加防火墙例外。现在将代码记录下来,方便以后备用。在Visual studio 项目引用右键里面添加引用,选中COM然后找到NetFwTypeLib,确认,然后新建类FireWallHelp.cs添加using NetFwTypeLib;代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Text; ... 阅读全文
posted @ 2012-10-23 16:50 Lyghost 阅读(684) 评论(0) 推荐(0)
摘要:为了将问题描述清楚,我们先来看一个例子。在这个例子中,WinForm上有一个按钮,当用户点击这个按钮后,就会装载一个已经存在的Assembly,并且在界面的Label控件上显示出这个Assembly的FullName。对Reflection稍微熟悉一点的朋友都知道,这是非常简单的事情,只需要用Assembly.LoadFile方法获得Assembly,然后用FullName属性来显示即可,比如下面的代码:1 private void button1_Click(object sender, EventArgs e) 2 { 3 Assembly assembly = Assem... 阅读全文
posted @ 2012-10-16 17:13 Lyghost 阅读(674) 评论(0) 推荐(0)
摘要:用到的类主要有HttpListener、StreamWriter.HttpListener:使用HttpListener可创建响应 HTTP 请求的简单 HTTP 协议侦听器。实际上HttpListener只是实现了服务器端Socket上面的一个简单封装类。通过设置Prefixes属性来进行侦听,如,侦听器绑定到http或https端点的URL(如下代码).侦听器默认是绑定到运行在http的80端口和https的443的端口,并允许匿名和无身份验证的客户端访问。可以使用HttpListener类的属性Prefixes来制定自定义url和端口,并通过设置属性AuthenticationSchem 阅读全文
posted @ 2012-10-05 10:43 Lyghost 阅读(4006) 评论(0) 推荐(0)