详解c_组件开发的来龙去脉

C#组件开发首先要了解组件的功能,以及组件为什么会存在。在VisualStudio环境下,将会有新形式的C#组件开发。组件的功能微软即将发布的VisualStudio将使程序开发人员获得一个集成开发环境,它不但为开发传统的C/C++应用程序,而且也为令人振奋的Microsoft组件提供了丰富的工具。这些以管理代码编写、在通用语言运行时构建的组件向开发人员提供了一个全新的混合开发环境,即象MicrosoftVisualBasic一样容易,而同时又提供了强大的低级编程能力,与ATL或MFC更加相关。随着以生产效率为中心的管理环境的到来,它可与传统COM组件很好地协同工作。开发人员可以将更多时间花在构建大型组件上,而不用再为内存泄漏、安全和头文件担心。除了提供MicrosoftFramework组件的开发外,VisualStudio(VS)还拥有很多工具,可以让组件利用VS中设计器架构的优势来设计出在外观和性能上与VS所附带组件相近的产品。在开发管理组件时,在VS设计器中获得的所有特性都使用组件本身的Framework,从而获得设计时与运行时组件之间的紧密集成。组件是什么很显然,MicrosoftFramework组件很容易编写。让它们与VisualStudio设计器一同工作的唯一要求是,它们实现SystemponentModel.IComponent,即通常表明继承于IComponent的默认应用。IComponent使组件可跟踪设计时的信息(如它的容器组件或名称)或访问设计器提供的服务。让我们编写一个简单的C#组件开发,它的形式如下:1usingSystem;2usingSystemponentModel;3publicclassBoolTracker:Component{4privateboolstate;5privateEventHandlerhandler;6privatestaticobjectEventValueChanged=newobject();78publicBoolTracker(){9}1011publicboolValue{12get{13returnstate;14}15set{16if(this.state!=value){17this.state=value;18OnValueChanged(newEventArgs());19}20}21}2223publicvoidAddOnValueChanged(EventHandlerh){24handler=(EventHandler)Delegatebine(handler,h);25}2627protectedvirtualvoidOnValueChanged(EventArgse){28if(handler!=null){29handler(this,e);30}31}3233publicvoidRemoveOnValueChanged(EventHandlerh){34handler=(EventHandler)Delegate.Remove(handler,h);35}3637}显然,这个组件不完成什么功能,但会将它置入VisualStudioWin窗体设计器或组件设计器中,即可从属性浏览器中看见它有名称,也有一个称为“Value”的属性,使用下拉箭头可以将值设置为True或False,当值在True和False之间切换时,可以触发事件OnValueChanged。对于设计器来说,组件只是我们要说明的一半,最重要的部分是属性,它组成了元数据,元数据是关于类、属性、事件等的信息。让我们以Value属性为例。仅作为属性,就已经有相关的元数据了,例如类型(布尔)、行为(读/写)或名称(“Value”)。使用“反射”对基本元数据进行检索,即通用语言运行时允许用户在运行时检查对象的类型、基本类型、属性、方法、构造器、字段和访问级别。所有这些信息都被认为是元数据。定制元数据定制元数据包括可添加到类或类成员的任意信息段(字段、属性或方法),实际上是类型本身被特定客户所识别。对于VisualStudio设计器来说,定制元数据构成所有可扩展性的基础。VS设计器理解的所有元数据属性都基于一名为SystemponentModel.MemberAttribute的类。它提供一个基本类,因此开发器所关心的属性可以通过它们的类型快速标识。通过一个典型实例可以更容易理解这一概念。比如我们不希望Value属性在属性浏览器中显示。我们可添加一个元数据属性SystemponentModel.BrowsableAttribute来控制一个属性是否可被浏览。38[Browsable(false)]39publicboolValue{40get{41returnstate;42}43set{44if(this.state!=value){45this.state=value;46OnValueChanged(newEventArgs());47}48}49}在指定属性时,可以将“BrowsableAttribute”缩略为“Browsable”。由C#编译器为我们添加“Attribute”一词。唯一的限制是如果指定了属性值,它必须与构造器的属性类型相符,且该数值必须是常量。在本例中,BrowsableAttribute有一个单一的布尔型参数“Browsable”的构造器,编译器把这个元数据属性绑定到...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?