随笔分类 -  C#

摘要:一、 命令(Command)模式 命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令 阅读全文
posted @ 2016-12-14 18:08 Napoléon 阅读(1287) 评论(0) 推荐(0)
摘要:Observer 与 Subject 互为耦合,但是这种耦合的双方都依赖于抽象,而不依赖于具体。 一、观察者模式 目的 我们都知道解决一个问题有N种解决方式,但在面向对象的设计中如何能做到“高内聚,低耦合”,设计可重用的对象才是我们追求的。在设计过程中,我们经常会接触到一种情况:一个对象的行为引发其 阅读全文
posted @ 2016-12-14 12:08 Napoléon 阅读(519) 评论(0) 推荐(0)
摘要:一、 工厂方法(Factory Method)模式工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在 阅读全文
posted @ 2016-12-14 11:26 Napoléon 阅读(660) 评论(1) 推荐(0)
摘要:工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式 一、 简单工厂( 阅读全文
posted @ 2016-12-14 11:06 Napoléon 阅读(432) 评论(0) 推荐(0)
摘要:引入人、工厂、和斧子的问题 工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A(). 工厂模式也是用来创建实例对象的,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。 工厂方式封装: Sample有个继承如MySample 在程序中, 阅读全文
posted @ 2016-12-13 17:52 Napoléon 阅读(632) 评论(0) 推荐(0)
摘要:单例模式三种写法: 第一种最简单,但没有考虑线程安全,在多线程时可能会出问题…… 第二种考虑了线程安全 第三种饥饿懒汉模式 一、 单例(Singleton)模式 单例模式的特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其它对象提供这一实例。 单例模式应用: 每台 阅读全文
posted @ 2016-12-13 16:54 Napoléon 阅读(791) 评论(0) 推荐(1)
摘要:应用场景: 使用 sql的 Case When Then 批量更新某张表,底层数据库用到了Dapper 代码示例: 最终生成的sql: 代码说明:这个方法的作用是,根据传进来的Dict<SmsFlowID,ClientReceivedResult>批量更新SmsSendResult对应的值,为了限定 阅读全文
posted @ 2016-12-07 17:37 Napoléon 阅读(4407) 评论(0) 推荐(2)
摘要:Web API入门指南有些朋友回复问了些安全方面的问题,安全方面可以写的东西实在太多了,这里尽量围绕着Web API的安全性来展开,介绍一些安全的基本概念,常见安全隐患、相关的防御技巧以及Web API提供的安全机制。目录Web API 安全概览安全隐患1. 注入(Injection)2. 无效认证... 阅读全文
posted @ 2015-06-19 16:32 Napoléon 阅读(12356) 评论(5) 推荐(9)
摘要:Web API是一个比较宽泛的概念。这里我们提到Web API特指ASP.NET Web API。这篇文章中我们主要介绍Web API的主要功能以及与其他同类型框架的对比,最后通过一些相对复杂的实例展示如何通过Web API构建http服务,同时也展示了Visual Studio构建.net项目的各... 阅读全文
posted @ 2015-06-19 16:30 Napoléon 阅读(214839) 评论(14) 推荐(43)
摘要:先前的概念中对JSON还是比较熟悉,对JSONP不是特别的清楚,整理完相关知识发现才豁然开朗。简单的说JSON是一种数据交换格式,而JSONP是 一种非官方跨域数据交互协议。JSON是“暗号”,而JSONP则是接头方式。一个是描述信息的格式,一个是信息传递双方约定的方法。一、什么是JSONJSON(... 阅读全文
posted @ 2015-06-19 15:11 Napoléon 阅读(5587) 评论(0) 推荐(2)
摘要:1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务。ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。 可以把WebApi看成Asp.N... 阅读全文
posted @ 2015-06-18 14:42 Napoléon 阅读(16218) 评论(3) 推荐(3)
摘要:在新出的MVC4中,增加了WebAPI,用于提供REST风格的WebService,新生成的WebAPI项目和典型的MVC项目一样,包含主要的Models、Views、Controllers等文件夹和Global.asax文件。Views对于WebAPI来说没有太大的用途,Models中的Model... 阅读全文
posted @ 2015-06-16 17:00 Napoléon 阅读(16937) 评论(4) 推荐(7)
摘要:WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系,越高档的机器性能越有优势。 程序性能改善不是一蹴而就的,好的设计可以消除影响性能的问题,... 阅读全文
posted @ 2015-04-08 18:08 Napoléon 阅读(13512) 评论(2) 推荐(2)
摘要:其实很简单,只要将容器控件中的附加属性FocusManager.IsFocusScope设为True就可以了下面是个简单的用例: 1 ... 阅读全文
posted @ 2015-01-30 16:18 Napoléon 阅读(1869) 评论(0) 推荐(0)
摘要:C# 获取文本文件的编码,自动区分GB2312和UTF8以下是获取文件编码的一个类using System; using System.IO; using System.Text; /// /// FileEncoding 的摘要说明 /// namespace FileEncoding { /... 阅读全文
posted @ 2015-01-30 16:04 Napoléon 阅读(22870) 评论(1) 推荐(1)
摘要:问题起因:在一个用户控件里放置了1个TreeView垂直顺序放置。当用户控件中的内容超过面板大小时,滚动条会自动出现,但是只有当鼠标指示在右边滚动条的那一条位置时,才支持鼠标滚轴滚动。点在控件内部时滚轴无效。问题分析:由于设置了d:designheight,自定义控件的宽高都是随着父容器的变化而变化... 阅读全文
posted @ 2015-01-27 11:05 Napoléon 阅读(4806) 评论(1) 推荐(0)
摘要:首先不管是C#也好,还是java也好,对于已经Abort的线程是无法再次Start的,除非是声明私有变量new一个新的线程,网上也有很多人说可以Suspend挂起线程,然后再Resume继续,但是相信聪明的你们早就发现了,微软官方已经将这两个方法设为过时了,不推荐这么用,现在本人就分享一个本人觉得还... 阅读全文
posted @ 2015-01-26 14:55 Napoléon 阅读(14042) 评论(0) 推荐(1)
摘要:在winform里面经常会用到WebBrowser,这是一个难点就是如何设置cookies,注意,Docment对象是只读的,所以WebBrowser.Docment.cookie也就只有get方法,没有set方法,下面将介绍如何设置cookies。public partial class WebB... 阅读全文
posted @ 2014-12-02 14:47 Napoléon 阅读(6010) 评论(0) 推荐(0)
摘要:方法一加入你想让WebBrowser控件的渲染模式编程IE8的标准模式, 你可以通过设置注册表FEATURE_BROWSER_EMULATION 来实现。示例:注册表中注明当前本机装的IE版本HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explore... 阅读全文
posted @ 2014-12-02 14:44 Napoléon 阅读(13517) 评论(0) 推荐(0)
摘要:Winform程序2.0的.需要引用Microsoft.mshtml. private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("http://www.ba... 阅读全文
posted @ 2014-06-27 15:52 Napoléon 阅读(1879) 评论(0) 推荐(0)