- 博客(103)
- 资源 (1)
- 收藏
- 关注
原创 C# 软件自动更新程序(七)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using AutoUpgrade.Models;using System.Xml.Linq;using System.Net;using System.Windows.Forms;using System.Config
2013-01-03 19:05:02
599
原创 C# 软件自动更新程序(六)
using System;using System.Collections.Generic;using System.Globalization;using System.Linq;using System.Net;using System.Text;using System.Windows.Forms;namespace AutoUpgrade.BL{ public c
2013-01-03 19:02:54
424
原创 C# 软件自动更新程序(五)
using AutoUpgrade.BL;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading
2013-01-03 18:58:20
404
原创 C# 通用应用程序发布检查工具-软件自动更新程序(四)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using AppReleaseCheckTool.Models;using System.IO;using System.Windows.Forms;using
2013-01-03 18:19:44
408
原创 C# 通用应用程序发布检查工具-软件自动更新程序(三)
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.W
2013-01-03 18:17:20
535
原创 C# 通用应用程序发布检查工具-软件自动更新程序(二)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Linq;namespace AppReleaseCheckTool.Models{ public class Fold
2013-01-03 18:14:15
524
原创 C# 通用应用程序发布检查工具-软件自动更新程序(一)
项目中自动更新程序因为网络的策略的原因,始终无法自动更新,正好利用2013元旦这几天研究一下。一、通用应用程序发布检查工具,主要目的生成自动更新配置文件。二、此工具可以过滤发布目录下的部分文件,目录。
2013-01-03 18:10:50
608
原创 [WF4实践二] 使用 WorkflowInvoker 和 WorkflowApplication
Windows Workflow Foundation (WF) 提供承载工作流的若干方法。WorkflowInvoker 提供调用工作流的简单方法,就像方法调用一样,并且只可用于不使用持久性的工作流。WorkflowApplication 为执行工作流提供更丰富的模型,包括生命周期事件通知、执行控制、书签恢复和持久性。WorkflowServiceHost 为消息传递活动提供支持,主
2012-07-16 10:47:41
632
原创 [WF4实践一] 使用 TryCatch 在 Flowchart 活动中进行错误处理
在此示例中,将促销代码和孩子数量作为变量传递到 Flowchart 活动,该活动将根据与促销代码相对应的公式计算折扣。此示例分为命令性代码版本和工作流设计器版本。 下表详细描述了 CreateFlowchartWithFaults 活动的变量。参数说明promoCode促销代码。类型:String可能的值,括号中带有说明:Si
2012-07-16 10:29:12
432
原创 [WF4实践一] 使用 TryCatch 在 Flowchart 活动中进行错误处理
在此示例中,将促销代码和孩子数量作为变量传递到 Flowchart 活动,该活动将根据与促销代码相对应的公式计算折扣。此示例分为命令性代码版本和工作流设计器版本。 下表详细描述了 CreateFlowchartWithFaults 活动的变量。参数说明promoCode促销代码。类型:String可能的值,括号中带有说明:Si
2012-07-16 10:18:48
189
原创 Silverlight图形编程系列(七)-再续绘制矢量图之Polyline 和 Polygon
Polyline(多线段) 和 Polygon(多边形)Polyline(多线段) 和 Polygon(多边形)是Silverlight中简单但功能强大的绘图对象。它允许你声明N个Points属性值,然后根据Points属性的坐标先后顺序来绘制图形,并且支持线条内部的颜色填充。首先介绍一下PolyLine,他比Line元素更加强大,下面例子利用Polyline来绘制线条:
2012-02-25 22:39:45
427
原创 Silverlight图形编程系列(六)-图形之Ellipse, Line, Path, Polygon, Polyline, Rectangle
Silverlight 2.0 图形: Ellipse - 椭圆 Line - 线 Path - 一系列相互连接的直线和曲线 Polygon - 多边形,闭合图形,起点与终点自动相连 Polyline - 非闭合图形,一串连接起来的线,起点与终点不会自动相连 Rectangle - 矩形 1、Ellipse.xaml
2012-02-25 22:20:56
655
原创 Silverlight图形编程系列(五)-绘制矢量图之Line
形状绘图形状(shape)在Silverlight是一个2D绘图类,它位于System.Windows.Shapes这个命名空间内。我们可以把Shape理解为所有Silverlight形状元素的一个集合,包括矩形(Rectangle)、椭圆(Ellispe)、线条(Line)、多段线(PolyLine)和多边形(Polyon).一、线条元素线条(Line)是Shape类中的一个最基本的
2012-02-25 22:13:40
733
原创 Silverlight图形编程系列(四)-布局控件Canvas
每一个XAML文件都应该有一个布局对象,布局对象相当于一个容器他可以容纳几乎所有的XAML元素,Silverlight为开发者提供了三种布局对象Canvas、StackPanel、Grid。Canvas:Canvas允许声明一个区域,包含在该区域内的XAML元素可以使用相对Canvas坐标的附加属性来显示和定位元素。StackPanel:StackPanel允许把若干个元素放在StackP
2012-02-25 21:49:38
564
原创 Silverlight图形编程系列(三)-XAML使用集合语法
使用集合语法来设置属性是一种比较特殊的设置方式,使用这种方式的元素通常都是支持一个属性元素的集合。可以使用托管代码的Add方法来添加更多的集合元素。使用集合语法设置元素实际上是向对象集合中添加属性项xaml :<UserControl x:Class="SilverlightApplication1.UserControls.LinearGradientBrushTest" xml
2012-02-25 21:39:13
384
原创 Silverlight图形编程系列(二)-使用GetValue和SetValue来设置属性
GetValue和SetValue是在托管代码中直接获取或设置对象属性的一种方法,如下面例子:<UserControl x:Class="SilverlightApplication1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas
2012-02-25 19:16:06
476
原创 Silverlight图形编程系列(一)-基础篇
第一个Silverlight程序,绘制一个长方型、一个椭圆、画一条线1、首先新建一个Silverlight程序 <UserControl x:Class="SilverlightApplication1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=
2012-02-25 18:59:05
339
转载 WF(Windows Workflow Foundation)
0 前言各位网友大家好!Vista的到来对于跟随微软的开发人员可谓又是一场技术的革命,革命尚未到来已经就有了山雨欲来风满楼的感觉。从去年的Avalon(WPF开发代号)、Indigo(WCF开发代号)、InfoCard(CardSpace开发代号)到现在的.Net Framwork 3.0的RTM版本已经有了将近两年的时间,在这段时间里相信大家也都对这些技术有一定的了解。
2008-10-16 14:21:00
1185
原创 面向图形可扩展矢量图形规范:SVG
来源:(正在更新,待查证,最初发表在2002年) 在过去十年中,图像图形技术曾经使出版印刷行业发生了一场深刻的技术革命,使古老的印刷术融入了高速发展的信息产业。随着Internet技术的普及和发展,图像图形技术作为Web浏览技术的基础,更将为建立一个全新的互联网行业,发挥至关重要的作用。然而,目前的Internet技术在图形图像方面,应该说还处在年轻阶段,从浏览器的核心技术来看,其对于图形图
2007-11-16 11:25:00
525
原创 一个关于构造方法的问题
今天看到一帖子。原文:http://community.youkuaiyun.com/Expert/topic/4657/4657161.xml?temp=.0378992Abstract class A{ public A(){draw();} abstract draw();}class B extends A{ public B(){} void draw(){}}public class
2007-10-17 16:42:00
495
原创 关于构造方法
很多人对构造方法都存在误解,这种误解来源于对象的创建语法和一些书对其模糊不清的说明。当然,在大多情况下这个误解并不会影响您的工作,但是这并不表示您就可以不去了解事实的真相。好了,我们就假设对象是由构造方法来创建的,我们看看下面这段代码会告诉我们什么。abstract class Base{ public Base() { Console.WriteLine("Base...");
2007-10-17 16:33:00
434
原创 Const 带来的错误
这本来是个小问题,但是却造成了几次错误了。在此贴一下,省得我再花时间去给那些犯错误的兄弟们上课。 首先看下面的代码:解决方案中有两个项目,分别是类库和CUI程序。Library.csproj========public class Lib{ public const int X = 13;}Test.csproj=======public class Class1{ static v
2007-10-17 16:31:00
409
原创 再议 构造方法
先看代码 class Base { static Base() { Console.WriteLine("Base Static Constructor..."); } public Base() { Console.WriteLine("Base Constructor..."); } } class Class1 : Base
2007-10-17 16:27:00
349
原创 Overload 陷阱
经常看到类似下面的方法重载public class Class1{ public static void Test(string s) { } public static void Test(object o) { }}虽然这样的重载能通过编译,但是会带来潜在的混乱和错误。当我们调用 Class1.Test(null) 时,我们并不能确定哪个方法会被执行,因此这样的编码设计是不
2007-10-17 16:25:00
348
原创 几个小细节
1. 使用 string.Empty 代替长度为0的空字符串""。// string s = "";string s = string.Empty;2. 触发事件时尽可能使用 EventArgs.Empty 替代 new EventArgs() 和 null。public class Class1{ public event EventHandler OnEvent; privat
2007-10-17 16:24:00
396
原创 关于将临时变量置为null是否有助于快速垃圾回收。
“将不再使用的临时变量立即置为null是否有助于垃圾回收”的话题好像有不少人争论过。首先,我们要理解GC回收垃圾数据的标准是通过路径检查,看是否还有引用指向某个对象。如果不再有引用指向这个待回收的对象,那么GC会将其放入待回收队列。从这个理论上来说,适时将不再使用的变量置为null是有助于垃圾回收的。但是,进一步理解GC的工作模式,我们会发现如下几个问题。1. GC只是将其置于待回收队列,并不一定
2007-10-17 16:18:00
410
原创 new 和 override 的区别
帮某个兄弟修改一个错误时,再次发现这个错误,于是写了个小例子,让初学者注意。呵呵。 class A { public virtual void Test() { Console.WriteLine("A"); } } class A1 : A { public override void Test() { C
2007-10-17 16:16:00
439
原创 关于测试代码
有些时候,我们为了测试或者跟踪某些信息需要编写一些测试代码,而这些代码在正式发行的时候却是多余的。那么我们可以采取以下的方法。1. #if DEBUG#endif2.[Conditional("DEBUG")]注意:"DEBUG" 区分大小写。ConditionalAttribute 需要添加 using System.Diagnostics;为了检验效果,我们看下面的例子。 public
2007-10-17 16:14:00
355
原创 “多态”一个需要注意的问题。
在C#中只有属性和方法能被声明为virtual,而字段则不能。因此注意下面例子中的问题。 public class Base { public int i = 10; public virtual void Test() { Console.WriteLine(i); } } public class Deliver : Base { publ
2007-10-17 16:12:00
373
原创 C# 方法参数 ref 详述
前几日在博客园看到一篇关于 ref 的帖子,想起以往一些同事工作中的错误,特作如下笔记。其实这个问题很容易理解,首先在C#中传递方法参数缺省是“值拷贝”模式,也就是说对于值类型(ValueType)变量直接拷贝一份,而对于引用类型则拷贝一个指向同一对象的引用副本传递给方法,因此即使不使用ref关键字,我们也可以在方法内部改变该引用所指向对象的内部状态,但是某些时候我们需要在方法内部创建一个新的对象
2007-10-17 16:09:00
511
原创 Castle.Windsor 类型和对象构造参数注入
Castle.Windsor 是一种非常方便的 IOC Framework,有关细节请参考官方文档。本文仅介绍如何向构造方法注入类型和对象参数。在下面的例子中,我们需要注入 InjectionClass 这个类型,为了方便我将它和其他类型写到一起。在注入 InjectionClass 的同时需要为这个类型提供另一个所依赖的类型 Data,Data 实现了 IData 接口。如果你为了更好地理解,可
2007-10-17 15:10:00
1207
1
原创 [ActiveRecord] 之六:继承
ActiveRecord 支持继承体系,我们看看几种不同的实现方式。1. 无关联继承public class Person{ private int id; [PrimaryKey(PrimaryKeyType.Identity)] public int Id { get { return id; } set { id = value; } } private stri
2007-10-17 15:09:00
585
原创 [ActiveRecord] 之五:ActiveRecordMediator
有意无意的,很多文章都没有提及 ActiveRecordMediator 。ActiveRecordMediator最大的用途是:即便你的实体类不是继承自 ActiveRecordBase (不推荐这么做),它也可以进行同等的创建、查找等操作;另外这个类实现了很多常用的方法,我们直接使用它就没必要为每个实体类写一堆相同的操作方法了(ActiveRecordBase的静态方法干吗声明为 protec
2007-10-17 15:07:00
642
原创 [ActiveRecord] 之四:Cascade
在ActiveRecord中级联操作为我们带来很多方便,但是一些细节地方需要注意。[ActiveRecord("Users")]public class User : ActiveRecordBase{ public User() { } public User(string name) : this() { this.name = name; } private int
2007-10-17 15:05:00
523
原创 [ActiveRecord] 之三:SessionScope
看了网上很多有关ActiveRecord的文章,对于SessionScope只是在延迟加载中提及,但是SessionScope实际上是ActiveRecord一个非常重要的特点。善于使用它可以提高应用性能。看看Castle官方网站是怎么说的。Session scope allows you to reuse the NHibernate session, thus not flushing it
2007-10-17 15:02:00
1018
原创 [ActiveRecord] 之二:常用方法
看下面的例子[ActiveRecord("Users")]public class User : ActiveRecordBase{ public User() {} public User(string name) : this() { this.name = name; } private int id; [PrimaryKey(PrimaryKeyType.Identi
2007-10-17 15:00:00
718
原创 [ActiveRecord] 之一:初始化和配置
有关Castle.ActiveRecord的介绍文章已经有不少了,本文不做详述。配置文件个人认为使用一个独立的配置文件可能更好点,App.config / Web.config 已经被塞入很多的内容了。ActiveRecord.xml 初始化代码// 获取数据库连接配置XmlConfigurationSource source = new XmlC
2007-10-17 14:58:00
743
原创 多层架构 简述
使用多层架构进行系统开发是现今系统设计的流行趋势。通过分解业务细节,将不同的功能代码分散开来,更利于系统的设计和开发,同时为可能的变更提供了更小的单元。以下就是一个典型的多层体系结构图。首先我们以“订单(Order)”为例,进行一个简单的业务分解。1. 订单自然包括订单的内容(OrderInfo),其中有诸如订单编号、商品名称、数量,以及金额等信息。2. 有了订单信息,我们还需要一个存储订
2007-10-17 10:33:00
440
原创 IOC 与 .net Framework 2.0
我们已经很习惯于使用工厂模式来创建对象,作为最常用的设计模式,可以让客户端非常容易地在多个产品类型中切换。尽管客户端使用接口或者抽象类来调用产品方法,但是我们依然无法摆脱具体的产品类,我们必须引用最终产品类库来创建目标产品对象,这是工厂模式的弊端。如果使用模板方法,我们就必须将产品接口和抽象类作为单独的类库打包,否则模板方法所在类库和最终产品类库间就会形成循环引用(见系统架构设计 & 避免循环引用
2007-10-17 10:31:00
513
原创 系统架构设计 & 避免循环引用
今天有同事问这个问题,记得以前也曾遇到过类似问题,特记录下来,免得再次忘记。下面这个系统结构图,恐怕大家都很熟悉。这种结构非常简单,而且其好处十分明显:1. 架构设计师完成设计后,使用工具直接生成Facade Library框架,将界面和类库开发进行分离。由于完全基于接口和外观模式,使得界面和类库之间的耦合降到最低。2. 界面程序员可以直接使用数据模拟类来进行开发,而无需等待类库(Conc
2007-10-17 10:29:00
487
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人