修己安人的技术博客(新地址: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 阅读(20) | 评论 (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 阅读(2754) | 评论 (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 阅读(546) | 评论 (3)编辑

2008年1月18日


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

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

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

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

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

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

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

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

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

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