.NET组件编程(10) 补充 ISupportInitialize
本来不打算写ISupportInitialize的,但是自己总觉得系列不完整,所有还是写下了这篇ISupportInitialize的文章。其实ISupportInitialize这个接口在Component里也
msdn上的解释为:指定该对象支持对批初始化的简单的事务处理通知。ISupportInitialize 允许控件为多组属性而优化。因此,可以在设计时初始化相互依赖的属性或批设置多个属性。
ISupportInitialize下有两个方法:BeginInit和EndInit,调用 BeginInit 方法用信号通知对象初始化即将开始,调用 EndInit 方法用信号通知初始化已完成。
那ISupportInitialize又是如何解决属性之间的依赖关系的呢?请看下面源代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
namespace ClassLibrary1

{
/**//*
要求:我们需要在Class1初始化完成后去执行Test1方法。
那我们需要把调用Test1写在哪里呢?
位置1:不行 因为调用Class1的构造函数的时,属性A和B都还没有赋值。
位置2:不行 虽然属性A已经赋值,但是属性B还没有值。
位置3:行 这个时候属性A和B都已经赋值。
位置4:行 此时所有的属性都赋值完成了。
那为什么不直接把Test的调用写在位置2或者3上呢?主要原因是:程序员在开发过程中不容易知道属性赋值的先
后顺序(即初始化Class1的时候,是先对A赋值还是先对B赋值),而位置4则可以肯定所有的属性都已经赋过值了。
*/
public class Class1 : Component, ISupportInitialize
{
public Class1()
{
// 位置1
}
private string _a;
public string A
{
get
{ return _a; }
set
{
_a = value;
// 位置2
}
}
private string _b;
private string B
{
get
{ return _b; }
set
{
_b = value;
// 位置3
}
}
// Component开始初始化
public void BeginInit()
{ 
}
// Component完成初始化
public void EndInit()
{
_c2.B(); // 位置4
}
public void Test1() // 这个方法依赖属性A和属性B
{
MessageBox.Show(A + ":" + B);
}
}
}
如果有什么问题,请给我留言或者给我评论。
顶一下
(0)
0%
踩一下
(0)
0%
- 上一篇:.NET组件编程(9) 结束篇
- 下一篇:学习asp.net比较完整的流程
- 最新评论 查看所有评论
-
- 发表评论 查看所有评论
-
- GRIDVIEW排序 动态实现和静态实现
- ASP.NET2.0数据操作之创建数据访问层
- 单点登录的实现
- ASP.NET程序中常用代码汇总
- ASP.NET中实时图表的实现
- ASP.NET中利用Crystal Report创建图表
- ASP.NET 2.0中Gridview控件高级技巧
- VB中String的用法及原理
- ASP.NET 2.0轻松实现数据库应用开发
- ASP.NET AJAX入门系列(1):概述
- HijackThis使用详解
- 网友整理 .net 面试题(附答案)
- Visual Studio 2005中编译调试
- ASP.NET AJAX入门系列(2):使用ScriptManager控
- ASP.NET2.0中Gridview中数据操作技巧
2012 cheap ugg ugg uggs uggs ugg ugg uggs ugg ugg ugg uggs boots ugg ugg UGGS boots uggs boots. tory burch shoes tory burch outlet for sale.
- ASP.NET LinkButton组件编程浅析
- ASP.NET CheckBoxList组件编程浅析
- ASP.NET组件编程之事件编写浅析
- ASP.NET组件设计之复杂属性和状态管理浅析
- ASP.NET编程模型HTTP协议浅析
- ASP.NET编程模型之HTTP协议浅析
- .NET组件编程(9) 结束篇
- .NET组件编程(8) Component DocumentDesigner(
- .NET组件编程(7) Component DesignerAction(智
- .NET组件编程(6) Component Designer
- .NET组件编程(5) TypeConverterAttribute,类型
- .NET组件编程(4) 用户自定义Property Editor的
- .NET组件编程(3) Property Editor
- .NET组件编程(2) PropertyAttribute和EventAttr
- .NET组件编程(1) 基础
