随笔分类 - C#
摘要:看过前一篇博文http://www.cnblogs.com/insus/archive/2013/04/21/3029483.html的网友,都大约知道,重构asp.net程序过程,使用了继承的方法。说实在的,Insus.NET不太喜欢在程序中使用继承。因为继承在应用,由于本身的原因,很多问题无法解决,或是运行自如。就如上一篇中,每个网页还是有很多相同的代码,无法拿掉。接下来,Insus.NET想使用接口方式重新对上一篇的原程序重新重构一次,望网友又能从中学习到其中一些开发知识。仔细看看App_Code目录下的Unitcode1 ~ UnitCode4个类别,均有相似之处。Insus.NET在
阅读全文
摘要:原程序,可以从下面地址下载:http://download.cnblogs.com/insus/ASPDOTNET/Ref_Org.rar数据库SQL Server 2008 R2,数据名为[Demo],它有四张表[UnitCode1], [UnitCode2], [UnitCode3], [UnitCode4],每个表有几个字段[Unit1~4],[Description],[CreateBy],[CreateDate],[UpdateBy],[UpdateDate],此四个表的主键分别为[Unit1],[Unit2],[Unit3]和[Unit4],其余字段名称四张表都一样。数据库还有各个
阅读全文
摘要:今天审核自己以前写的程式,发现下面面这段代码,写得非常不理想,if层次太多,而且else也多。看过《重构》的人,都会认为那是有着很浓的坏味道。上面代码,它的意思是文本框的值变化而作出另一文本框TextBoxBankName显示。如果文本框的值不为空,去搜索数据记录,如果有记录,把BankName显示于TextBoxBankName内。其它一切条件,TextBoxBankName均为空。上面的代码是没有问题,是能正常运行,但它有很多坏味道,if与else层资多,现Insus.NET把它重构,让其更简洁明了。重构过之后,它的程式,先给TextBoxBankName赋值为string.Empty,第
阅读全文
摘要:早上有分享《Repeater控件动态变更列(Header,Item和Foot)信息》 ,是动态变更一些列的内容。虽然它算不上是完全动态化,但它已经达到初期想要的效果。如果你稍有仔细,也能轻易把它弄出来。现另开一篇,Insus.NET不是重新另外写,而是想重构cs的代码,因为前一篇的代码虽然简单,但代码冗余过多。重构开始:首先把这五个变量删除,因为在重构过程中,已经不需要这五个变量了。//宣告5个变量,将用来存储那5个月份每个部分的数量decimal c1, c2, c3, c4, c5;接下来需要改动的是宣告一个常量,很多地方使用到它:const int dynamicColumns = 5;
阅读全文
摘要:近段时间,有朋友叫Insus.NET了解一下反射(Reflection)方面的知识,反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。下面的例子,是Insus.NET是练习对一个类别的属性进行set和get值。首先写一个类,再写一个可读写的属性:View Code using System;using System.Collections.Generic;using System.Linq;using System.Web;/// &
阅读全文
摘要:在开发asp.net程序时,用户的数据将保存至数据库,程序与数据库之间的数据操作,会涉及到往数据库添加数据,编辑数据,更新数据和删除数据等。本次Insus.NET介绍的是工厂方法,因此我们会从这几个操作入手。介绍工厂方法设计模式,得先从简单工厂设计模式(Simple Factory)开始,简单工厂,有一个操作类,这个类有一个virtual方法,好让其它子类继承与重写:Operationusing System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Su
阅读全文
摘要:生活在城市,平时少不了去餐馆吃饭。或是加班下班之后,难免吃上宵夜之后,才回家。在餐馆或是大排档坐下,老板一般都会在第一时间,给你上茶水以及菜谱(在此博文中,这是重点)。我们接过菜谱之后,都会把菜谱遍历一遍,不放过任一美味与自己喜欢吃的佳肴。遍历一遍,此就是一种开发的设计模式,叫迭代器设计模式。迭代器模式,它提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。我们接过菜谱,使用两眼从头至尾或是从后往前看。菜谱聚集结构提供了第一项,下一项,是否结束,当前是哪一项了,是不是自己需要点的菜式。因此我们提供一个迭代的抽象类:Iteratorusing System;using Sys
阅读全文
摘要:开发的设计模式,是博大精深的,只有一步一个脚印和循序渐进的学习与应用,才能有进步。近段时间,Insus.NET把自己理解设计模式,简单写了一下与分享自己的理解与想法。得到很多高手与网友的热心评论,让Insus.NET学习与进步不少,真心感谢了。前几天有写了一篇《烹饪,简单工厂(Simple Factory)》,一开始就创建一个"烹饪类",来负责创建其他类的实例。接下来创建炒,煎,煮,炖等类。今天,Insus.NET也是以烹饪来写一个建造者设计模式,烹饪是膳食的艺术。Insus.NET虽然不是厨师,但喜欢品尝各种美味的佳肴。此篇是介绍建造者设计模式,我们以烹饪的方式做一顿家常
阅读全文
摘要:Insus.NET在想,每在公司或是老板给自己发工资时,每个人都会重新计算一下自己的工资,是否正确。好象老板或是会计都会把自己的工资计错了似的。因此,每个都人都是工资计算高手。工资计算,需要知道基本工资是多少; 否有加薪,加薪方式,是按基本工资的百分比来加,还是由得公司或是老板随心而加,表现加多些,表现不好加少一些;是否有加班,加班的方式也要清楚,工作天加班,普通假日加班,或是法定假日加班;是否有补帖等等。每一种方式,在此也算得上是算法,完成的都是相同的工作,只是实现不同罢了。为了简化与分工,我们可以把每种算法写成一个独立的类,减少它们之间的耦合。每个算法,返回一个结果,因此可以写一个抽象类,
阅读全文
摘要:“烹”就是煮的意思,“饪”是指熟的意思,狭义地说,烹饪是对食物原料进行热加工,将生的食物原料加工成熟食品;广义地说烹饪是指对食物原料进行合理选择调配,加工治净,加热调味,使之成为色、香、味、形、质、养兼美的安全无害的、利于吸收、益人健康、强人体质的饭食菜品包括调味熟食,也包括调制生食。因此,我们产生...
阅读全文
摘要:一个研发公司就如外观设计模式,它有诸多开发团队(子系统),前端开发团队,程序开发团队,数据库开发团队,测试团队等等。为各个开发团队能高度协调,公司定义一个协调接口,使得各个开发团队更加协调。前端开发团队:FrontEndDevelopmentTeamusing System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Summary description for FrontEndDevelopmentTeam/// </summary>name
阅读全文
摘要:用简单的例子,说明代理(Proxy)设计模式。Insus.NET在家忙写程序没有时间,手机没钱了,叫儿子给一百元去超市(此超市有手机充值的服务)帮Insus.NET手机充值(话费)。手机充值的事,Insus.NET会做,儿子也会做,但是Insus.NET因某些情况,不能亲自办,叫儿子去代理(Proxy)。定义一个抽象类[Work],让自己或是儿子类别都能实现的充值方法:Workusing System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Summar
阅读全文
摘要:行为抽象即可写成接口(Interface)。如此http://www.cnblogs.com/insus/archive/2013/02/24/2924190.html链接的例子中的开与关,就可以把它们设计为抽象方法。我们宣告接口时,使用interface来声明,就如宣告类使用class一样。在编程规范中,使用字母"I"开头。接口中的所有签名,如方法,属性,索引器,事件等。不能带修饰符,比如public,private等,不能有任何实现内容,也不能声明虚拟(virtual)的或静态(static)的等。ISwitchableusing System;using System
阅读全文
摘要:平时在asp.net开发中,很少使用到抽象类,一个小小例子来学习一下。抽象类(abstract class),不能实例化,因此我们可以把不被实例化的类,宣告为抽象类。抽象类内包含了抽象方法(abstract void),它只能写在抽象类中,没有实现部分,只能在派生类重写(override)或实现。去年小新房装修,去了家居装饰城,看了各式各样的灯饰(实例),统称为灯(抽象)。下面的在抽象类Light中,有两个抽象的方法。Lightusing System;using System.Collections.Generic;using System.Linq;using System.Web;///
阅读全文
摘要:前天有一网友问及有关设计模式的适配器模式(Adapter)时,说不太好理解。让Insus.NET能否举个简单的例子来说明一下。下面的动画是Insus.NET做出来的效果:上面的演示,两个灯的规格一样,要求输入的电压为15伏。Light1是直接使用,而Light2是使用Adapter(电源适配器)。因此Light1只能接收15伏的电压,小于15伏,会提示电压过低,如果超过了15伏,Light1肯定被烧坏。Light2使用了电源适配器,它接收15伏至220的电压,在这电压范围之内,电源适配器会把电压转为15的电压。小于15伏,会提示电压过低,如果超过了220伏,适配器被烧坏。好,我们程序开始,先创
阅读全文
摘要:Insus.NET重构过的一个List Control Utility的类库,它包括DropDownList,RadioButtonList,ListBox以及BulletedList控件的绑定重构。改善以前只能传入DataTable和HashTable数据源。 前版本类库http://www.cnblogs.com/insus/articles/1399645.html。最新版下载地址:http://download.cnblogs.com/insus/library/InsusListControlUtility.rar在.NET Framework 4.0或以上使用。下载解压,把Insu
阅读全文
摘要:“一个.aspx的页面中,用到了两个用户控件,其中想做的到A控件有一个按钮,点击的时候获取到B控件中的一个textbox的值。 因为在生成的时候名字会改变,用findcontrol的时候名字该如何写呢? 另外像这种问题有几种解决的办法呢?”论坛上看到这个问题http://bbs.csdn.net/topics/390357779,Insus.NET提供自己的解决方法,先看看解决运行的效果:首先创建一个站点,然后创建两个用户控件,一个是UcA,一个是UcB。 在UcB的控件上拉一个TextBox。View Code <%@ Control Language="C#" A
阅读全文
摘要:开发要求,原本对CheckBoxList控件是用来让用户多选的。但现在特殊要求,这个CheckBoxList控件限制只能单选。哈哈,看看Insus.NET做出来的效果:为了你也能实现出来,可以参考下面的方法,第一是准备好一个对象“地支”(Terrestrial Branch)TerrestrialBranch.csusing System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Summary description for TerrestrialBra
阅读全文
摘要:公司的域环境内,程序要求获取客户端的IP地址,分部程序码分享于此。C#:VB.NET:
阅读全文
摘要:Server Error in '/InsusSiteCS' Application.The type 'Catalog', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found. Description: An unhandled
阅读全文