修己安人的技术博客(新地址:http://zhonghua.cnblogs.com)

三纲:明德、新民、止于至善; 八目:格物、致知、诚意、正心、修身、齐家、治国、平天下。
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2008年4月15日

不知道大陆放不方便网购


http://www.microsoft.com/taiwan/msdn/books/windesign/win7.htm

posted @ 2008-04-15 16:02 换个了新的博客:http://zhonghua.cnblogs.com 阅读(60) 评论(0) 编辑

2008年3月26日

      虽然母版页这个功能出来很久了,但是一直都没有机会去使用它。
      最近我计划把公司网站升级到.NET1.1 升级到 .NET 3.5上去,除了隐式类型、扩展方法、Lambda表达式、LinQ等新特性外,母版页这个功能页是肯定会去玩玩的。于是今天用VS2008创建一个网站,尝试着进行一些最基本的任务,数据绑定,页面传值等。
这只是第一天,由于工作的时候不断的有外来任务打扰,所以学习成果甚少,除了看了MSDN一些资料,也查了一下互联网上的资料,在CSDN中有一个帖子里说,母版页不能通过ViewState传值,其实这是错误的。母版页绝对可以通过ViewState来传值,并且方法非常简单。
      下面为母版页的代码:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Main" MasterPageFile="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>主母版页</title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <div style="border-style: dashed; font-family: 宋体, Arial, Helvetica, sans-serif; font-size: xx-large; font-weight: 100; font-style: normal; font-variant: normal; text-transform: capitalize; color: #FF0000">主要的母版页!</div>
      <br />
      <div align="center"
                style="font-family: 宋体, Arial, Helvetica, sans-serif; font-size: large; font-weight: 400; font-style: italic">Hi!欢迎您使用ASP.NET3.5!<br />
          <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
            </div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
       
        </asp:ContentPlaceHolder>
        <div align="center" style="border-style: ridge">版权所有,违者必究! 浙江新能量科技有限公司2008</div>
    </div>
    </form>
</body>
</html>


 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;

public partial class Main : System.Web.UI.MasterPage,IMasterData
{
    public int BtnCount
    {
        get
        {
            return this.ViewState["BtnCount"] == null ? 0 : Convert.ToInt32(this.ViewState["BtnCount"]);
        }
        set
        {
            this.ViewState["BtnCount"] = value;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        this.BtnCount++;
    }
}





其中IMasterData
接口的代码如下:
/// <summary>
///母版页的数据
/// </summary>
public interface IMasterData
{
    int BtnCount { get; set; }
}


方法一:
在内容页面中使用:
((Main)this.Page.Master).BtnCount;

此方法不推荐,灵活程度很低,万一哪天BtnCount或者Main更改了,或者是在多个母版页之中选择,这行代码就很危险。

方法二:
在内容页面中使用:
((IMasterData)this.Page.Master).BtnCount;

推荐,定义一个接口,通过接口来调用要调用的成员,针对接口编程,好处不用我说了。

方法三:
在内容页面中使用:
this.Page.Master.GetType().GetProperty("BtnCount").GetValue(this.Page.Master, null)

这是一种相对灵活的方法,在编译的时候无法判断错误的方法,特殊情况下可以考虑使用此方法。

方法四:
override object SaveViewState()和override void LoadViewState(object savedState)
虽然没试过,但是我想绝对可以,因为母版页和内容页是一个合并过程,先调用母版页在调用内容页,只要根据这个执行顺序去做,完全可以实现。希望哪位时间比较空余的人在此贴后面贴上实现代码,以供大家分享。


posted @ 2008-03-26 00:51 换个了新的博客:http://zhonghua.cnblogs.com 阅读(3939) 评论(6) 编辑

2008年1月23日

OCP 开闭原则:“软件实体(类、模块、方法等)应该是可以扩展的,但是不可修改。”

      开闭原则可以说是OOD中最基本的一个原则,在设计模式中处处可见,同时也是IoC的基础,OCP原则,是程序员向设计师发展的第一个必会OOD原则。

      假设我们开发了一个操作系统,在开发之前,我们不知道我们的操作系统会支持哪些厂商的打印机,因为打印机厂商不断的在倒闭与增加。为了很方便的支持各种打印机并不修改我们的操作系统源程序,我们必须要公布一个打印机驱动接口,并针对找个接口开发管理程序。于是,我们便有了以下设计:

      其中,我们IPrint接口是我们向外公布的接口,如果想要在我们的操作系统上使用他们的打印机,那就要实现找个接口。Printer类是一个打印者类,他的功能是获取打印驱动程序的名称、对象,以及获取相关的打印驱动。
这个组件,针对各种打印机厂商,IPrint接口是开放的,可以实现,封装他们自己的特性;针对Printer类是关闭的,不允许修改。如果有新打印机产品推出,只要实现IPrint接口,就能在我们的操作系统上运行。这样,就达到了我们以不变应万变的目的。

以下是Demo源程序。
OCP Demo

posted @ 2008-01-23 14:46 换个了新的博客:http://zhonghua.cnblogs.com 阅读(818) 评论(3) 编辑

2008年1月18日


SRP  单一职责原则
       就一个类而言,应该仅有一个引起它变化的原因。

       软件实体(类、模块、方法等)应该是可以扩展的,但是不可修改。

LSP  Liskov替换原则
       子类型必须能够替换掉他们的基类型。

DIP  依赖倒置原则
       抽象不应该依赖于细节,细节应该依赖于抽象类。

ISP  接口隔离原则
       不应该强迫客户与依赖他们不用的方法。接口属于客户,不属于它所在的类层次结构。

ERP  重用发布等价原则
       重用的粒度就是发布的粒度。

CCP  共同封闭原则
       一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用保重的所有类。
ADP  无环依赖原则
       在包中的依赖关系图中不允许存在环。

SDP  稳定依赖原则
       朝稳定的方向进行依赖。

SAP  稳定抽象原则
       包的抽象程度应该和其稳定程度一致。

posted @ 2008-01-18 11:50 换个了新的博客:http://zhonghua.cnblogs.com 阅读(83) 评论(2) 编辑