积极答复者
c# 组合类的使用?

问题
答案
-
你是说组合模式么? 这个多用于写显示控件。比如: class DisplayItem{ string Text ;} class MyTextBox : DisplayItem class MyLabel : DisplayItem ////调用的时候就可以直接管理和调用父类了 ////首先使用父类容器管理所有的子类对象 DisplayItem[] di = new DisplayItem[4]; di [0].Text = new MyTextBox(); di [1].Text = new MyLabel (); di [2].Text = new MyTextBox(); di [3].Text = new MyLabel (); ///然后使用父类来进行共同的操作,此时不必知道知道子类的类型。 int i = 0; foreach( DisplayItem crrItem in di) { crrItem.Text = "text_" + i; i++ } ////还可以按需从集合抓取某种类型的对象 var rst = from DisplayItem crrItem in di where crrItem.GetType() == typeof(MyTextBox ) select crrItem; foreach( DisplayItem crrItem in rst) { MyTextBox crrTextBox = crrItem as MyTextBox ; ////do someth for you crrTextBox }
信奎爷,无所畏惧!!- 已建议为答案 Charles Shao 2011年2月27日 7:52
- 已标记为答案 Neddy Ren 2011年3月3日 6:23
-
您好,Efforts:
欢迎来到MSDN中文论坛。
对于组件Component, MSDN的介绍如下:
Component 是公共语言运行时中按引用封送的所有组件的基类。 Component 可以进行远程处理,并且派生自 MarshalByRefObject 类。 Component 类提供 IComponent 接口的实现。 MarshalByValueComponent 提供按值封送的 IComponent 的实现。
可以在任何实现 IContainer 接口的对象中承载 Component,并且可以从其容器中查询和获取服务。 容器会为它所包含的每个 Component 创建一个 ISite。 容器使用该站点来管理 Component,而 Component 则使用该站点与它的容器进行通信。
Component 应通过调用其 Dispose 方法来显式释放资源,而不通过隐式调用 Finalize 方法来等待自动内存管理。 当释放一个 Container 时,同时会释放该 Container 中的所有组件。
在下面的博客文章中,也有一个小小的例子讲解,希望能对你的学习有所帮助:
http://blog.csdn.net/skyhits2008/archive/2006/11/27/1417178.aspx如果您还有问题,请随时告知我们。
Neddy Ren [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已建议为答案 JiyuanModerator 2011年2月28日 10:15
- 已标记为答案 Neddy Ren 2011年3月3日 6:23
全部回复
-
你是说组合模式么? 这个多用于写显示控件。比如: class DisplayItem{ string Text ;} class MyTextBox : DisplayItem class MyLabel : DisplayItem ////调用的时候就可以直接管理和调用父类了 ////首先使用父类容器管理所有的子类对象 DisplayItem[] di = new DisplayItem[4]; di [0].Text = new MyTextBox(); di [1].Text = new MyLabel (); di [2].Text = new MyTextBox(); di [3].Text = new MyLabel (); ///然后使用父类来进行共同的操作,此时不必知道知道子类的类型。 int i = 0; foreach( DisplayItem crrItem in di) { crrItem.Text = "text_" + i; i++ } ////还可以按需从集合抓取某种类型的对象 var rst = from DisplayItem crrItem in di where crrItem.GetType() == typeof(MyTextBox ) select crrItem; foreach( DisplayItem crrItem in rst) { MyTextBox crrTextBox = crrItem as MyTextBox ; ////do someth for you crrTextBox }
信奎爷,无所畏惧!!- 已建议为答案 Charles Shao 2011年2月27日 7:52
- 已标记为答案 Neddy Ren 2011年3月3日 6:23
-
您好,Efforts:
欢迎来到MSDN中文论坛。
对于组件Component, MSDN的介绍如下:
Component 是公共语言运行时中按引用封送的所有组件的基类。 Component 可以进行远程处理,并且派生自 MarshalByRefObject 类。 Component 类提供 IComponent 接口的实现。 MarshalByValueComponent 提供按值封送的 IComponent 的实现。
可以在任何实现 IContainer 接口的对象中承载 Component,并且可以从其容器中查询和获取服务。 容器会为它所包含的每个 Component 创建一个 ISite。 容器使用该站点来管理 Component,而 Component 则使用该站点与它的容器进行通信。
Component 应通过调用其 Dispose 方法来显式释放资源,而不通过隐式调用 Finalize 方法来等待自动内存管理。 当释放一个 Container 时,同时会释放该 Container 中的所有组件。
在下面的博客文章中,也有一个小小的例子讲解,希望能对你的学习有所帮助:
http://blog.csdn.net/skyhits2008/archive/2006/11/27/1417178.aspx如果您还有问题,请随时告知我们。
Neddy Ren [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已建议为答案 JiyuanModerator 2011年2月28日 10:15
- 已标记为答案 Neddy Ren 2011年3月3日 6:23