博客园 - 装配脑袋
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=684808
2013-07-20T17:19:33Z
装配脑袋
https://www.cnblogs.com/Ninputer/
feed.cnblogs.com
https://www.cnblogs.com/Ninputer/p/3203029.html
Windows Azure一些小技巧集合 - 装配脑袋
我最近做了一个Windows Azure上面的项目,自己在做的过程中遇到了很多问题。有的是我自己摸索解决,有的是到网上寻找零碎的信息结合起来解决的。我感觉应当把某些解决方法集中一下,方便我以后查阅,也方便其他人。本文涉及的内容主要是Azure的Cloud Service服务。 在Windows Azure中启用Trace 部署到Windows Azure上的代码是不能够用Visual Studi...
2013-07-20T17:16:00Z
2013-07-20T17:16:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】我最近做了一个Windows Azure上面的项目,自己在做的过程中遇到了很多问题。有的是我自己摸索解决,有的是到网上寻找零碎的信息结合起来解决的。我感觉应当把某些解决方法集中一下,方便我以后查阅,也方便其他人。本文涉及的内容主要是Azure的Cloud Service服务。 在Windows Azure中启用Trace 部署到Windows Azure上的代码是不能够用Visual Studi... <a href="https://www.cnblogs.com/Ninputer/p/3203029.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2012/01/03/2310945.html
C++ AMP实战:绘制曼德勃罗特集图像 - 装配脑袋
之前我写了一篇用GPU绘制曼德勃罗特(Mandelbrot)集图像的文章,里面使用的技术是与DirectX 11继承在一起的DirectCompute。DirectCompute执行在GPU上的kernel代码,必须用一种特殊的HLSL语言来编写。虽然这种语言有些类似于C,但一些特殊的细节使得没接触过DirectX的开发人员很不适应。相比于kernel代码,驱动HLSL所要进行的准备工作那简直麻烦...
2012-01-03T07:02:00Z
2012-01-03T07:02:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】之前我写了一篇用GPU绘制曼德勃罗特(Mandelbrot)集图像的文章,里面使用的技术是与DirectX 11继承在一起的DirectCompute。DirectCompute执行在GPU上的kernel代码,必须用一种特殊的HLSL语言来编写。虽然这种语言有些类似于C,但一些特殊的细节使得没接触过DirectX的开发人员很不适应。相比于kernel代码,驱动HLSL所要进行的准备工作那简直麻烦... <a href="https://www.cnblogs.com/Ninputer/archive/2012/01/03/2310945.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/08/18/2145045.html
GPU并行计算版函数图像生成器 - 装配脑袋
前几天技术大牛Vczh同学开发了一个函数图像绘制程序,可以画出方程f(x,y)=0的图像。他的原理是用图像上每一点的坐标带入函数f得到针对x和y的两个方程,再用牛顿迭代法求解得到一组点集,然后画到图像上。用他的程序可以画出各种各样令人惊叹的方程图形。但是他的程序非常慢,因为对每一个点坐标都用牛顿迭代法求解是一项很费时的任务,即使采用了Parallel.For,CPU算起来也很吃力。我研究了他的程序...
2011-08-18T15:48:00Z
2011-08-18T15:48:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】前几天技术大牛Vczh同学开发了一个函数图像绘制程序,可以画出方程f(x,y)=0的图像。他的原理是用图像上每一点的坐标带入函数f得到针对x和y的两个方程,再用牛顿迭代法求解得到一组点集,然后画到图像上。用他的程序可以画出各种各样令人惊叹的方程图形。但是他的程序非常慢,因为对每一个点坐标都用牛顿迭代法求解是一项很费时的任务,即使采用了Parallel.For,CPU算起来也很吃力。我研究了他的程序... <a href="https://www.cnblogs.com/Ninputer/archive/2011/08/18/2145045.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/08/02/2120435.html
自己动手开发编译器(十二)生成托管代码 - 装配脑袋
前一阶段我们完成了编译器中的重要阶段——语义分析。现在,程序中的每一个变量和类型都有其正确的定义;每一个表达式和语句的类型都是合法的;每一处方法调用都选择了正确的方法定义。现在即将进入下一个阶段——代码生成。代码生成的最终目的,是生成能在目标机器上运行的机器码,或者可以和其他库链接在一起的可重定向对象。代码生成,和这一阶段的各个优化手段,统称为编译器的后端。目前大部分编译器,在代码生成时,都倾向于...
2011-08-02T06:57:00Z
2011-08-02T06:57:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】前一阶段我们完成了编译器中的重要阶段——语义分析。现在,程序中的每一个变量和类型都有其正确的定义;每一个表达式和语句的类型都是合法的;每一处方法调用都选择了正确的方法定义。现在即将进入下一个阶段——代码生成。代码生成的最终目的,是生成能在目标机器上运行的机器码,或者可以和其他库链接在一起的可重定向对象。代码生成,和这一阶段的各个优化手段,统称为编译器的后端。目前大部分编译器,在代码生成时,都倾向于... <a href="https://www.cnblogs.com/Ninputer/archive/2011/08/02/2120435.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/07/22/2112030.html
自己动手开发编译器(十一)语义分析 - 装配脑袋
上回我们已经用VBF的Parsers.Combinators库生成了miniSharp的语法分析器,并且能够将miniSharp的源代码翻译成抽象语法树(AST)。这一回我们要继续进行下一步——语义分析。就目前大家接触的编程语言,如C#、VB、C++来说,语义分析是编译器前端最复杂的部分。因为这些编程语言的语义都非常复杂。语义分析不像之前词法分析、语法分析那样,有一些特定的工具来帮助。这一部分通常...
2011-07-22T03:15:00Z
2011-07-22T03:15:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】上回我们已经用VBF的Parsers.Combinators库生成了miniSharp的语法分析器,并且能够将miniSharp的源代码翻译成抽象语法树(AST)。这一回我们要继续进行下一步——语义分析。就目前大家接触的编程语言,如C#、VB、C++来说,语义分析是编译器前端最复杂的部分。因为这些编程语言的语义都非常复杂。语义分析不像之前词法分析、语法分析那样,有一些特定的工具来帮助。这一部分通常... <a href="https://www.cnblogs.com/Ninputer/archive/2011/07/22/2112030.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/07/08/2099570.html
自己动手开发编译器(十)miniSharp语法分析器 - 装配脑袋
经过前面四篇的铺垫,我们终于拥有了编写语法分析器的强大工具,现在可以正式开发一门编程语言的语法分析器了。我们先来定义miniSharp的语法规则,然后根据LL文法的特点进行一些调整,最后借助解析器组合子生成完整的语法分析器。 miniSharp语言是C#的一个小子集,然而它仍然具有一门完整编程语言的所有要素,而且仍然是一种面向对象的语言。我们把miniSharp的语法分成三类——声明结构、语句和...
2011-07-07T17:19:00Z
2011-07-07T17:19:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】经过前面四篇的铺垫,我们终于拥有了编写语法分析器的强大工具,现在可以正式开发一门编程语言的语法分析器了。我们先来定义miniSharp的语法规则,然后根据LL文法的特点进行一些调整,最后借助解析器组合子生成完整的语法分析器。 miniSharp语言是C#的一个小子集,然而它仍然具有一门完整编程语言的所有要素,而且仍然是一种面向对象的语言。我们把miniSharp的语法分成三类——声明结构、语句和... <a href="https://www.cnblogs.com/Ninputer/archive/2011/07/08/2099570.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/07/03/2096944.html
自己动手开发编译器(九)CPS风格的解析器组合子 - 装配脑袋
上回我们用函数式编程的方法,结合Linq语法,建立了一套解析器组合子方案,并能成功解析自定义文法的输入字符串。但是,上次做成的解析器组合子有个重要的功能没有完成——错误报告。作为编程语言的语法分析器,不能在遇到语法错误的时候简单地返回null,那样程序员就很难修复代码中的语法错误。我们需要的是准确报告语法错误的位置,更进一步,是程序中所有的语法错误,而不仅仅是头一个。后者要求解析器具有错误恢复的能...
2011-07-03T14:16:00Z
2011-07-03T14:16:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】上回我们用函数式编程的方法,结合Linq语法,建立了一套解析器组合子方案,并能成功解析自定义文法的输入字符串。但是,上次做成的解析器组合子有个重要的功能没有完成——错误报告。作为编程语言的语法分析器,不能在遇到语法错误的时候简单地返回null,那样程序员就很难修复代码中的语法错误。我们需要的是准确报告语法错误的位置,更进一步,是程序中所有的语法错误,而不仅仅是头一个。后者要求解析器具有错误恢复的能... <a href="https://www.cnblogs.com/Ninputer/archive/2011/07/03/2096944.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/26/2090645.html
自己动手开发编译器(八)用Linq编写解析器组合子 - 装配脑袋
上回我们说到手写递归下降语法分析器。手写递归下降的方式是目前很多编译器采用的方式,如果你想写一个商业质量的编译器,这是首选的方法。但是,一个完善的递归下降解析器需要的代码量也不少,如果要进行错误报告、错误恢复等等那代码量就更大了。作为懒人,我们有时想要一些小型语言的解析器,最好写起来像直接写文法的产生式一样,最好连错误报告和错误恢复也一并自动解决,可能吗?在过去很长一段时间,人们采用的方法是使用解...
2011-06-26T12:28:00Z
2011-06-26T12:28:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】上回我们说到手写递归下降语法分析器。手写递归下降的方式是目前很多编译器采用的方式,如果你想写一个商业质量的编译器,这是首选的方法。但是,一个完善的递归下降解析器需要的代码量也不少,如果要进行错误报告、错误恢复等等那代码量就更大了。作为懒人,我们有时想要一些小型语言的解析器,最好写起来像直接写文法的产生式一样,最好连错误报告和错误恢复也一并自动解决,可能吗?在过去很长一段时间,人们采用的方法是使用解... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/26/2090645.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/21/2085527.html
自己动手开发编译器(七)递归下降的语法分析器 - 装配脑袋
上回我们说到语法分析使用的上下文无关语言,以及描述上下文无关文法的产生式、产生式推导和语法分析树等概念。今天我们就来讨论实际编写语法分析器的方法。今天介绍的这种方法叫做递归下降(recursive descent)法,这是一种适合手写语法编译器的方法,且非常简单。递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方面也很有优势。...
2011-06-20T16:22:00Z
2011-06-20T16:22:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】上回我们说到语法分析使用的上下文无关语言,以及描述上下文无关文法的产生式、产生式推导和语法分析树等概念。今天我们就来讨论实际编写语法分析器的方法。今天介绍的这种方法叫做递归下降(recursive descent)法,这是一种适合手写语法编译器的方法,且非常简单。递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方面也很有优势。... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/21/2085527.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/18/2084383.html
自己动手开发编译器(六)上下文无关语言和文法 - 装配脑袋
上回我们已经学习了语法分析第一阶段——词法分析的原理和工具,介绍了正则表达式、正则语言和DFA等工具。今次我们要开始涉及编译器前端最重要的阶段——语法分析。简单而言,这一步就要完整地分析整个编程语言的语法结构。上回说到词法分析的结果是将输入的字符串分解成一个个的单词流,也就是诸如关键字、标识符这样有特定意义的单词。一种完整的编程语言,必须在此基础上定义出各种声明、语句和表达式的语法规则。观察我们所...
2011-06-18T12:27:00Z
2011-06-18T12:27:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】上回我们已经学习了语法分析第一阶段——词法分析的原理和工具,介绍了正则表达式、正则语言和DFA等工具。今次我们要开始涉及编译器前端最重要的阶段——语法分析。简单而言,这一步就要完整地分析整个编程语言的语法结构。上回说到词法分析的结果是将输入的字符串分解成一个个的单词流,也就是诸如关键字、标识符这样有特定意义的单词。一种完整的编程语言,必须在此基础上定义出各种声明、语句和表达式的语法规则。观察我们所... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/18/2084383.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/16/2083092.html
自己动手开发编译器特别篇——用词法分析器解决背诵圣经问题 - 装配脑袋
这几天比较忙,让大家久等了。但是我语法分析篇还需要一些准备,所以今天带来一个特别娱乐项目。其实也正好想多举一些例子,介绍VBF.Compilers.Scanner库的使用方法。今天的问题来自于一道腾讯的PHP面试题,原题如下: 我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,...
2011-06-16T13:30:00Z
2011-06-16T13:30:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】这几天比较忙,让大家久等了。但是我语法分析篇还需要一些准备,所以今天带来一个特别娱乐项目。其实也正好想多举一些例子,介绍VBF.Compilers.Scanner库的使用方法。今天的问题来自于一道腾讯的PHP面试题,原题如下: 我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/16/2083092.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/13/2080094.html
自己动手开发编译器(五)miniSharp语言的词法分析器 - 装配脑袋
多谢各位的一直以来的支持,我们今天总算走到了实践的一步。今天我们要用VBF.Compilers的词法分析库来开发一个小型语言——miniSharp的词法分析。miniSharp是C#语言的子集,miniSharp程序的语义就等于把它当做C#的语义。但是miniSharp只支持很少的语言特性,以降低制作编译器的难度。简单来说miniSharp有如下特征: 只有一个源文件,不能引用其他dll(甚至不...
2011-06-13T13:54:00Z
2011-06-13T13:54:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】多谢各位的一直以来的支持,我们今天总算走到了实践的一步。今天我们要用VBF.Compilers的词法分析库来开发一个小型语言——miniSharp的词法分析。miniSharp是C#语言的子集,miniSharp程序的语义就等于把它当做C#的语义。但是miniSharp只支持很少的语言特性,以降低制作编译器的难度。简单来说miniSharp有如下特征: 只有一个源文件,不能引用其他dll(甚至不... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/13/2080094.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/12/2078671.html
自己动手开发编译器(四)利用DFA转换表建立扫描器 - 装配脑袋
上回我们介绍了两种有穷自动机模型——确定性有穷自动机DFA和非确定性有穷自动机,以及从正则表达式经过NFA最终转化为DFA的算法。有些同学表示还是难以理解NFA到底怎么转化为DFA。所以本篇开头时我想再多举一个例子,看看NFA转化为DFA之后到底是什么样。首先我们看下面的NFA,它是从一组词法分析所用的正则表达式转换而来的。这个NFA合并了IF、ID、NUM、error这四个单词的NFA。因此,它...
2011-06-11T17:36:00Z
2011-06-11T17:36:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】上回我们介绍了两种有穷自动机模型——确定性有穷自动机DFA和非确定性有穷自动机,以及从正则表达式经过NFA最终转化为DFA的算法。有些同学表示还是难以理解NFA到底怎么转化为DFA。所以本篇开头时我想再多举一个例子,看看NFA转化为DFA之后到底是什么样。首先我们看下面的NFA,它是从一组词法分析所用的正则表达式转换而来的。这个NFA合并了IF、ID、NUM、error这四个单词的NFA。因此,它... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/12/2078671.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/10/2077991.html
自己动手开发编译器(三)有穷自动机 - 装配脑袋
上回我们说到用正则表达式来表示词法分析中的单词规则。正则表达式的规则很容易理解,但是正则表达式并不能直接用来解析字符串,我们还要引入一种适合转化为计算机程序的模型。今天我们引入的这种模型就叫做有穷自动机(finite automation,FA),有时也叫有穷状态机(finite state machine)。有穷自动机首先包含一个有限状态的集合,还包含了从一个状态到另外一个状态的转换。有穷自动机...
2011-06-10T14:10:00Z
2011-06-10T14:10:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】上回我们说到用正则表达式来表示词法分析中的单词规则。正则表达式的规则很容易理解,但是正则表达式并不能直接用来解析字符串,我们还要引入一种适合转化为计算机程序的模型。今天我们引入的这种模型就叫做有穷自动机(finite automation,FA),有时也叫有穷状态机(finite state machine)。有穷自动机首先包含一个有限状态的集合,还包含了从一个状态到另外一个状态的转换。有穷自动机... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/10/2077991.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/08/2075714.html
自己动手开发编译器(二)正则语言和正则表达式 - 装配脑袋
从今天这一篇起,我们就来正式揭开编译器的奥秘。首先我们接触到的模块是词法分析器,也叫词法扫描器,代码里我常常叫它Scanner。昨天我稍微解释了一下为什么需要将词法分析单独分离出来,今天来回顾一下这个问题。请看下面这段C#代码: 即使没有语法高亮,这段代码也可以很明显地分成好几部分。首先是关键字string,之后是变量名str,然后是等号=,接下来是一个字符串字面常量”Hello World”。现...
2011-06-08T13:12:00Z
2011-06-08T13:12:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】从今天这一篇起,我们就来正式揭开编译器的奥秘。首先我们接触到的模块是词法分析器,也叫词法扫描器,代码里我常常叫它Scanner。昨天我稍微解释了一下为什么需要将词法分析单独分离出来,今天来回顾一下这个问题。请看下面这段C#代码: 即使没有语法高亮,这段代码也可以很明显地分成好几部分。首先是关键字string,之后是变量名str,然后是等号=,接下来是一个字符串字面常量”Hello World”。现... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/08/2075714.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/07/2074632.html
自己动手开发编译器(一)编译器的模块化工程 - 装配脑袋
本系列的第一篇,我想概述一下编译器的构造,同时帮助大家了解编译器中各个组成部分的用途。想必大家看别的编译原理书籍,大都在第一章或者序言之类的地方,将编译器分成许多模块,然后每一个模块负责编译的特定阶段,最后串起来组成完整的编译器。比如下面这张图就是虎书(Modern Compiler by Andrew W. Appel)第一章中出现的编译器阶段示意图: 那么,为什么要将编译器拆成一个个阶段,一...
2011-06-07T13:29:00Z
2011-06-07T13:29:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】本系列的第一篇,我想概述一下编译器的构造,同时帮助大家了解编译器中各个组成部分的用途。想必大家看别的编译原理书籍,大都在第一章或者序言之类的地方,将编译器分成许多模块,然后每一个模块负责编译的特定阶段,最后串起来组成完整的编译器。比如下面这张图就是虎书(Modern Compiler by Andrew W. Appel)第一章中出现的编译器阶段示意图: 那么,为什么要将编译器拆成一个个阶段,一... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/07/2074632.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2011/06/06/2073908.html
自己动手开发编译器(零)序言 - 装配脑袋
好久没写博客了,一来是自己懒,二来是最近一段时间都没有做什么自己认为可以分享的东西。这几天刚好重拾了一个一直打算做但没做的编译器类库,算是积累了一点小小的经验吧。本来我已经发到了Github上,也在微博上零星介绍了一些,但是我最终意识到,如果不写一个详细的文档,别人就不能容易地学习、了解和使用它。甚至于我自己也可能会把这次研究出来的小小成果给忘了。所以,必须下决心动一动笔头,也算是对老长时间不些博...
2011-06-06T14:05:00Z
2011-06-06T14:05:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】好久没写博客了,一来是自己懒,二来是最近一段时间都没有做什么自己认为可以分享的东西。这几天刚好重拾了一个一直打算做但没做的编译器类库,算是积累了一点小小的经验吧。本来我已经发到了Github上,也在微博上零星介绍了一些,但是我最终意识到,如果不写一个详细的文档,别人就不能容易地学习、了解和使用它。甚至于我自己也可能会把这次研究出来的小小成果给忘了。所以,必须下决心动一动笔头,也算是对老长时间不些博... <a href="https://www.cnblogs.com/Ninputer/archive/2011/06/06/2073908.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2009/12/11/1622190.html
DirectCompute & DirectX 11 计算着色器编程简介(翻译) - 装配脑袋
译者注:DirectX一直是Windows上图形和游戏开发的核心技术。DirectX提供了一种在显卡上运行的程序——着色器(Shader)。在DirectX 11之前,着色器是与具体的渲染步骤绑定的,例如像素着色器,顶点着色器等等。而从DirectX11开始,DirectX增加了一种计算着色器(Compute Shader),它是专门为与图形无关的通用计算设计的。因此DirectX就变成了一个通用...
2009-12-11T12:27:00Z
2009-12-11T12:27:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】译者注:DirectX一直是Windows上图形和游戏开发的核心技术。DirectX提供了一种在显卡上运行的程序——着色器(Shader)。在DirectX 11之前,着色器是与具体的渲染步骤绑定的,例如像素着色器,顶点着色器等等。而从DirectX11开始,DirectX增加了一种计算着色器(Compute Shader),它是专门为与图形无关的通用计算设计的。因此DirectX就变成了一个通用... <a href="https://www.cnblogs.com/Ninputer/archive/2009/12/11/1622190.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2009/12/01/1614249.html
趣味问题:你能用Reflection.Emit生成这段代码吗?(答案) - 装配脑袋
在上一篇博客中我提出了一个问题:如何用.NET的Reflection.Emit生成等价于下面VB代码的三个类型: Class A Implements B.IEnd ClassClass B Inherits A Interface I End InterfaceEnd Class这个问题的难点在于三个类型有循环依赖关系:A实现了接口B.I,因此A依赖于I;B是A的子类,因此B依赖于A;接口I是B...
2009-12-01T01:16:00Z
2009-12-01T01:16:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】在上一篇博客中我提出了一个问题:如何用.NET的Reflection.Emit生成等价于下面VB代码的三个类型: Class A Implements B.IEnd ClassClass B Inherits A Interface I End InterfaceEnd Class这个问题的难点在于三个类型有循环依赖关系:A实现了接口B.I,因此A依赖于I;B是A的子类,因此B依赖于A;接口I是B... <a href="https://www.cnblogs.com/Ninputer/archive/2009/12/01/1614249.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Ninputer/archive/2009/11/30/1613447.html
趣味问题:你能用Reflection.Emit生成这段代码吗? - 装配脑袋
众所周知,Reflection.Emit是非常强大的工具,可以在运行时动态生成各种程序集、类型和方法的IL代码,几乎无所不能。原先我也是这样认为的,但是看了某个人的博客之后我发现想要用Reflection.Emit做一些特殊的事情还是很需要技巧性的。假设你还没有看过那个人的博客(暂时先不公开……)可以尝试一下这个问题。下面的代码可以用vbc.exe正确编译(当然等价C#程序也可以经试验C#编译器无...
2009-11-30T01:09:00Z
2009-11-30T01:09:00Z
装配脑袋
https://www.cnblogs.com/Ninputer/
【摘要】众所周知,Reflection.Emit是非常强大的工具,可以在运行时动态生成各种程序集、类型和方法的IL代码,几乎无所不能。原先我也是这样认为的,但是看了某个人的博客之后我发现想要用Reflection.Emit做一些特殊的事情还是很需要技巧性的。假设你还没有看过那个人的博客(暂时先不公开……)可以尝试一下这个问题。下面的代码可以用vbc.exe正确编译(当然等价C#程序也可以经试验C#编译器无... <a href="https://www.cnblogs.com/Ninputer/archive/2009/11/30/1613447.html" target="_blank">阅读全文</a>