Welcome 微信登录

首页 / 软件开发 / C#

玩转动态编译(二) 实战

玩转动态编译(二) 实战

玩转动态编译(二) 实战2014-03-20 cnblogs 冰麟轻武在玩转动态编译:一、初识中,我们已经学会了最简单的使用动态编译。今天直接由实战入手,看看 真实情况下的动态编译能为我们来带什么。今天要演示的实例是一个在实际开发中经常遇到的情 况,对象转Json。我将会使用2种方式分别做一个转json字符串的实例,1:反射;2:动态编译分析问题分析C#对象在json中的映射。总体来说json对象只有几种情况键值对 对象,由多组键对象+值对象构成,最外面是...
玩转动态编译(三) 提高性能,抛弃反射

玩转动态编译(三) 提高性能,抛弃反射

玩转动态编译(三) 提高性能,抛弃反射2014-03-20 cnblogs 冰麟轻武通过之前2篇文章的介绍,大家一定发现了,动态编译后的对象只能通过反射调用,但是反射往往是 一个程序性能的瓶颈,这个真的无法突破么?答案当然是否定的,接下来就我就来说说怎么才能,挖掘 动态编译的潜力。一点废话我刚来博客园才1星期左右,昨天才弄懂怎么发表到首页,先 说声抱歉了,昨天的文章有几个地方贴的源码居然少了几个字符,有点莫名其妙,也难怪有人不能运行 了,虽然是小错误,但是...
玩转动态编译(四) 封装

玩转动态编译(四) 封装

玩转动态编译(四) 封装2014-03-20 cnblogs 冰麟轻武既然要使用动态编译,那么为他封装一个调用类,在调用时省去大量不必要的编码操作还是很有必要的 。为什么要封装?其实这个说起来很简单,就是发现现有的动态编译类在使用过程中显 得并不是那么好用。我觉得我可以让他变的更易使用。所以我应该重新封装了一个 DynamicCompile类。不过在这之前我还要考虑一下一个问题:我需要什么?在使 用动态编译的过程中,我逐渐的发现,动态编译有以下几种情况1....
实战MEF(1)一种不错的扩展方式

实战MEF(1)一种不错的扩展方式

实战MEF(1)一种不错的扩展方式2014-03-20在过去,我们完成一套应用程序后,如果后面对其功能进行了扩展或修整,往往需要重新编译代码生 成新的应用程序,然后再覆盖原来的程序。这样的扩展方式对于较小的或者不经常扩展和更新的应用程 序来说是可以接受的,而对于像ERP系统那样复杂而且常常需要扩展的应用程序,这种扩展方法就不够方 便,因为每次都要修改源代码或重新引用组件。尤其是组件(许多dll),如果每编写一个新组 件又要在主项目中引用一次,显然主项目就不...
实战MEF(2)导出及导入

实战MEF(2)导出及导入

实战MEF(2)导出及导入2014-03-20上一文中,我们大致明白了,利用MEF框架实现自动扫描并组装扩展组件的思路。本文我们继续前进,从最初的定义公共接口开始,一步步学会如何使用MEF。在上一文中我们知道,对于每一个实现了公共规范的扩展组件,都需要进行导出,随后我们的主应用程序文件中会自动进行组装。这便产生了一个疑问:为什么需要导出?如果大家还记得,以前我们用VC++写.dll文件时,都会把需要提供给别人调用的函数标记为导出函数,这样别人才能调用我们编...
实战MEF(3)只导出类的成员

实战MEF(3)只导出类的成员

实战MEF(3)只导出类的成员2014-03-20 cnblogs 东邪独孤通过前面两篇文章的介绍,相信各位会明白MEF中有不少实用价值。上一文中我们也讨论了导入与导 出,对于导出导入,今天我们再深入一点点,嗯,只是深入一点点而已,不会很难的,请大家务必放心 ,如果大家觉得看文章枯燥,不妨一边喝牛奶一边阅读。上一文中我们都是把整个类型(整个类 )进行导出,不过有时候,我们可能会考虑只导出类的某些成员,比如某个属性或某个字段等。我们还是少说理论,免得大家喝不...
实战MEF(4)搜索范围

实战MEF(4)搜索范围

实战MEF(4)搜索范围2014-03-20 cnblogs 东邪独孤在前面的文章中,几乎每个示例我们都会接触到扩展类的搜索位置,我们也不妨想一下,既然是自动 扩展,它肯定会有一个或者多人可供查找的位置,不然MEF框架怎么知道哪里有扩展组件呢?就像我 们用导航系统去查找某个地方的所有旅店一样,正因为在该地的旅店已在数据库中注册了相关信息,我 们的导航系统才能查找到它,如果某家旅店没有向导航数据库提供任何数据,那很显然导航系统是无法 识别到它的详细地址的。M...
实战MEF(5)导出元数据

实战MEF(5)导出元数据

实战MEF(5)导出元数据2014-03-20 cnblogs 东邪独孤如何理解元数据我们可以把元数据理解为随类型一起导出的附加信息。有时候我们会考虑, 把元数据随类型一并导出,增加一些说明,使得我们在导入的时候,可以多一些筛选条件。默 认的类型导出带有元数据吗上面的内容我说得比较简洁,也许您不是很理解,不要紧,在编程 里面,很多东西我们都是写了代码后才理解的。所以,我的理论功底比较差,最不擅长的就是长篇大论 ,还是从代码中看吧。我们首先要弄清楚一下问题:...
利用流水线改进代码中的if处理流程

利用流水线改进代码中的if处理流程

利用流水线改进代码中的if处理流程2014-03-20本文用到的编程语言为C#,具体思路不限制编程语言。刚才正在浏览http://ruby-china.org/topics/7384的时候,看到5楼的回复,突然有一种想法,不知道优劣,请大家帮忙评判一下,或者给出一些更好的实现方案。我们先来上一段代码,就是常见的一种代码。Order getOrder(string orderNo) {order = repo.getOrder(orderNo);if(ord...
设计模式之规约模式C#版

设计模式之规约模式C#版

设计模式之规约模式C#版2014-03-20规约模式的使用场景就是规则,业务规则的碎片化。业务规则的组合是不固定的,需要做成很容易组合,也很容易拆散的方式,规约模式是一个选择。下面的例子是一个书店中,用户租书的场景。需要判断用户的最大租书数和用户的状态,需要同时满足这两个要求,才可以继续租书。最大租书数和状态这两个规则拆散开来,在需要的时候再进行组合。不需要组合的地方,就单独使用这些规则。针对一个实体有不同的规则,把这些规则碎片化,随意组合和拆散,这样就构...
如何在入口点使用异步等待(await)

如何在入口点使用异步等待(await)

如何在入口点使用异步等待(await)2014-03-20 东邪独孤 众所周知(除了不知道的),C#5新增了一个异步等待的功能,用来来非常简单就能够实现异步等待 了。规则是这样的:在调用异步方法前面加上await关键字,并且调用该异步方法的方法前面要 加上一个async关键字。比如这样:async void DoDelayAsync(){await Task.Delay(999999999);}在进入DoDelayAsync方法时代码同步执行,直到遇到aw...
实现语音朗读功能

实现语音朗读功能

实现语音朗读功能2014-03-20 csdn 东邪独孤不知道大家有没有发现,在System.Speech.Synthesis命名空间下有一个SpeechSynthesizer类,它可 以指定的文本内容进行语音朗读,而且,这个类用起来也严重简单,简单到什么程度? 试试看。首先,新建一个项目,随便你建什么项目,反正能测试即可。然后,添加对System.Speech程序 集的引用,这个不用我教你了,你再菜,只要用VS都不可能不懂这个。引入 System.Spe...
关于枚举

关于枚举

关于枚举2014-03-20 csdn 东邪独孤一提起枚举,我想各位是熟悉得无法形容的了。枚举有啥用?枚举就是用来对一系列可选值进行规范 。举个例子说,定义一个关于厕所的枚举,通常我们见到的厕所有男厕,女厕,或者狗 厕。是吧,估计你走在大街上很少看到有龟厕的吧。因此,为了让使用我们代码的人能有一个规范供他 参考,于是我们会把男厕、女厕和狗厕三种可选项定义在一个枚举类型“厕所”中。再比如,我 们在开发一个下象棋的应用程序时,在开始时对...
还记得BackgroundWorker吗

还记得BackgroundWorker吗

还记得BackgroundWorker吗2014-03-20 csdn 东邪独孤打开电脑,突然想起来,昨天下午,有位仁兄和我讨论过一个事,不妨拿来说说。她说她的 牛逼程序要处理一堆东东,要弄个进度条作提示,不过进度条是在另一个窗口中的,她的想法是,在开 始处理数据时弹出进度对话框,实时显示处理进度,当处理完成后关闭对话框。乍看起来其实不难,不 过她遇到了以下问题,故在群里提问。1、模态对话框的问题。这问题好办,一般来说, 要长时间来处理数据,应该考虑后台异...
反射的另一种功能

反射的另一种功能

反射的另一种功能2014-04-08 csdn 东邪独孤说到反射嘛,估计各位不陌生,尽管很多人不知道到底是什么,当然也有人将其看作是“反编译” ,有点像吧,但不能说是反编译,虽然有个“反”字,但没有“编译”。所以,我给反射下了 这样一个概述,准确与否,也不清楚:反射可以动态获取程序集信息,或程序集中的类型信息 ,以方便动态调用。动态调用的好处是节约资源,通常情况下,我们添加程序集引用会...
教你在桌面上涂鸦

教你在桌面上涂鸦

教你在桌面上涂鸦2014-04-08 csdn 东邪独孤我曾经说过一句致理名言:涂鸦是人生一大乐趣。只要你懂得涂鸦之道,涂鸦是非常好玩的 。在窗口上画多了,不爽了,想不想在桌面上画? 不要惊讶,这是可以的。Graphics类可以用 一个静态方法FromHwnd来创建实例,如果想在桌面上涂鸦,只要得到桌面的句柄就可以了。那么如何得 到桌面的句柄呢?要用到一个非托管API,即[DllImport("User32.dll")]public e...
如何捕捉桌面上的窗口信息

如何捕捉桌面上的窗口信息

如何捕捉桌面上的窗口信息2014-04-08 东邪独孤 今天我为大家带来一个有趣的例子,有点像Spy++的功能,通过鼠标在屏幕上移动,并实时捕捉指定 坐标点处的窗口信息。窗口信息包括窗口标题,窗口句柄,窗口类名,以及呈现所捕捉窗口的 缩略图。现在我们不妨来思考一下,要实现这些功能,我们需要准备哪些技术要点?1 、获取当前鼠标指针的屏幕坐标,这个用System.Windows.Forms命名空间下的Cursor类的Position属性 就可以知道当前鼠标指针...
分布式EventBus的Socket实现:发布订阅

分布式EventBus的Socket实现:发布订阅

分布式EventBus的Socket实现:发布订阅2014-04-08 cnblogs Aaron在这篇文章中,EventBus实现 - 发布订阅 - XML加载 所适用的范围只是本机的事件传播,要是牵 涉到多台服务器之间的事件传播就不行了,解决办法有用msmq解决的,Node.js解决的,也有用redis的 发布订阅解决的,这次用C# socket来实现,能实现立刻推送事件到所有订阅了相关event的server上。这次的子系统适用的场景如下:主要分2个...
<< 191 192 193 194 195 196 197 198 199 200 >>