随笔分类 - 【知识-C#基础】
摘要:本例是在用VS2008打开项目是报错 未找到C:\Program Files\MSBuild\Microsoft\VisualStudio\V10.0 In the last article Build and deploy web application project using NANT sc
阅读全文
摘要:COM是Component Object Model (组件对象模型)的缩写。 用户需要什么样的软件产品?这是一个多选题,但高效,健壮是肯定会被选中的。作为一名软件开发人员如何做才能满足用户的需要呢?必须要保证升级应用时不破坏与以前版本的向后兼容性。必须做到扩展系统服务时不依赖特定的操作系统。面向对象的程序设计显然是一次革命性的改变。采用面向对象的设计方法我们可以很容易的把要解决的问题事物抽象成各种类,并将内部动作封装隐藏起来,只提供一些接口。但这并没有完全解决我们的问题。昨天我在《程序员》杂志上看到,现在是后OO时代,那OO以后是什么呢?应该是面向组件吧。手动启动COM组件操作方法:运行——
阅读全文
摘要:1.协变和抗变在.NET 4之前,泛型接口是不变的。.NET 4通过协变和抗变为泛型接口和泛型委托添加了一个重要的扩展。协变和抗变指对参数和返回值的类型进行转换。例如,可以给一个需要Shape参数的方法传送Rectangle参数码?下面用示例说明这些扩展的优点。在.NET中,参数类型是协变的。假定有Shape和Rectangle类,Rectangle派生自Shape基类。声明Display()方法是为了接受Shape类型的对象作为其参数:public void Display(Shape o) { } 现在可以传递派生自Shape基类的任意对象。因为Rectangle派生自Shape,所以Re
阅读全文
摘要:本文转载自Allen Lee's Magic缘起每次有新技术发布时,我们总能感受到两种截然不同的情绪:一种是恐惧和抵抗,伴随着这种情绪的还有诸如"C# 2.0用的挺好的,为什么要在C# 3.0搞到那么复杂?"或者"我还在使用C# 1.0呢?"等言辞;另一种则是兴奋和拥抱,伴随着这种情绪的还有诸如"原来这个问题在C# 3.0里可以这么简单!"等言辞。最近我在公司内部做一个LINQ的系列讲座,在我为其中C# 3.0新特性这一讲准备演示文稿时,突然萌生了写下这篇文章的念头。语言的特性乃至其本身并没有对错之分,是否接受在很大程度上是一
阅读全文
摘要:本文转载自张子阳目录为什么要使用事件而不是委托变量?为什么委托定义的返回值通常都为void?如何让事件只允许一个客户订阅?(事件访问器)获得多个返回值与异常处理委托中订阅者方法超时的处理委托和方法的异步调用引言如果你看过了C#中的委托和事件一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器、异常处理、超时处理和异步方法调用等内容。为什么要使用事件而不是委托变量?在C#中的委托和事件中,我提出了两个为什么在类型中使用事件向外部提供方法注册,而不是直接使用委托变量
阅读全文
摘要:原文来自VAllen cnblogs一、使用教程1、解压后,双击Reflector.exe,如果有选择默认版本的.Net Framework,根据需要选择即可。你选择的版本不同则出现的默认程序集也不同,我选择的是.Net4.0;2、点击file-open选择要反编译的DLL,打开后程序集的命名空间会出现在列表中;3、点击树形列表中的类,右边就会出现相应的反编译代码。反编译后的代码和原代码基本没有什么区别;4、如果想把反编译后的代码导入到文件中,我们可以使用Reflector.FileDisassembler这个Reflector插件,下面介绍Reflector.FileDisassembler
阅读全文
摘要:本文转载自张子阳目录委托的作用 将方法绑定到委托 事件的来由Observer设计模式.Net Framework中的委托与事件引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作
阅读全文
摘要:本文转载自张逸:晴窗笔记.Net平台与Java平台相比,由于它至今在服务端仍不具备与unix系统的兼容性,也不具备类似于Java平台下J2EE这样的企业级容器,使得.Net平台在大型的企业级应用上,常常为人所诟病。就目前而言,.Net平台并没有提供AOP技术的直接实现,而微软在未来对于.Net的发展战略目标,我们仍未可知。但我相信微软对于目前炙手可热的AOP技术应该不会视而不见。也许在未来的.Net平台下,会出现类似于Spring那样的轻量级IoC容器,加上O/R Mapping的进一步实现与完善,随着Windows Server操作系统的逐步推新,.Net平台对于企业级系统开发的支持会越..
阅读全文
摘要:本文转载自张逸:晴窗笔记AOP技术本质2.2.1 技术概览AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持
阅读全文
摘要:Aspect-Oriented Programming(面向方面编程,AOP)正好可以解决这一问题。它允许开发者动态地修改静态的OO模型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在其生命周期中不断改变自身,应用程序也可以在发展中拥有新的功能。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可..
阅读全文
摘要:本文转载自努力,努力,努力1.委托的定义:委托是函数的封装,它代表一"类"函数.他们都符合一定的签名:拥有相同的参数列表,返回值类型.同时,委托也可以看成是对函数的抽象,是函数的"类".此时,委托的实例将代表一个具体的函数.委托声明和定义了一个引用类型,它用来封装方法,用指定的签名来封装方法.一个委托的实例,可以封装静态或者实例方法.委托是一种引用的类型,一旦为委托分配了方法,委托将与该方法完全相同的行为,委托方法的使用可以像其他任何方法一样,具有参数和返回值委托的一个特征是它们的类型是安全的.可以确保被调用的方法签名是正确的,但他们并不关心调用该方法的
阅读全文
摘要:本文转载自:DANCE WITH JAVA 在《道法自然——面向对象实践指南》一书中,我们采用了一个对立统一的辩证关系来说明“模板方法”模式—— “正向依赖 vs. 依赖倒置”(参见:《道法自然》第15章[王咏武, 王咏刚 2004])。这种把“好莱坞”原则和 “依赖倒置”原则等量齐观的看法其实来自于轻量级容器PicoContainer主页上的一段话: “控制反转(Inversion of Control)的一个著名的同义原则是由Robert C. Martin提出的依赖倒置原则(Dependency Inversion Principle),它的另一个昵称是好莱坞原则(Hollywood..
阅读全文
摘要:本文转载自kuangkro如果给您带来不便请联系博主一、控制反转和依赖注入Ninject是一个轻量级的基于.Net平台的依赖注入(IOC)框架。所谓的IOC,即控制反转(Inversion of Control),它是一个经典的面向对象编程法则,它的作用主要是用来帮助应用程序解耦,并把程序分离成一个个松耦合高内聚的模块。控制反转还有一个名字叫依赖注入(Dependency Injection),简称DI。二、快速无xml配置注入1、定义应用程序Moduleusing LogService;using LogService.Impl;using Ninject.Modules;using Nin
阅读全文
摘要:本文转载自永远的阿哲如果给您带来不便请联系博主。Ninject是一款.Net平台下的开源依赖注入框架.按照官方说法,它快如闪电、超级轻量,且充分利用了.Net的最新语法,使用Lambda表达式代替Xml文件完成类型绑定.Ninject结构精巧,功能强大,越来越受到各类开发者的关注,其开源社区非常活跃,众多开发者为它开发了各种各样的扩展应用.其中有一款名叫Ninject.Web.Common,是所有将Ninject应用于Web项目的基框架,而Ninject.MVC3则是将Ninject应用于Asp.Net Mvc中的框架.这两者是本文分析的主角. 书写本文时,Ninject的版本号为3.0.1,
阅读全文
摘要:有两个窗体(frmMain,frmChild)frmMain中有一LISTVIEW控件,在双击LISTVIEW后弹出frmChild. 在frmChild修改数据后关闭frmChild frmMain中LISTVIEW的数据也同时更新.先把frmMain中LISTVIEW的属性中的Modifiers改为public 父窗体: frmChild f = new frmChild(); f.Owner = this; f.ShowDialog(); 子窗体: frmMain r = new frmMain() //在子窗体(frmChild)中定义 r = (frmMain)this.Owner;
阅读全文

浙公网安备 33010602011771号