【译】Object Dumper: 函数式程序设计编码中的强大工具

Post in English:Object Dumper: An Invaluable Tool for Writing Code in the Functional Programming Style

 

  当用函数式程序设计的方式开发C#应用程序时,你经常需要把一个集合输出到控制台。Object dumper在这方面是一个强大的工具。本为中的例子只有很少开发者了解。

  功能的转换通常需要连续的变换:转换集合a=>集合b=>集合c=>最终的集合。这是我的Functional Programming Tutorial中话题的要点。

  当我准备开发这样一个转换时,我首先在大脑中完成了这样一个转换的模型。有时候(特别是编写临时的转换时)我不会在编码之前完整的设计出每一个转换。例如,当源集合特别麻烦时,我先将它转变为简单明了的数据,再将其转换进一个有用的格式,为随后的转换做准备。有时我将其转换为匿名类型,有时我马上就知道我要将其转换为命名的类型。无论我选择那种方式,在我写下一个转换之前验证上一个转换是否正确时,Object Dumper将会是一个很好的工具。

  捎带提一下:我写这些转换的时候通常不经常用调试器。我写一个转换,验证其结果,写下一个转换,再验证,以此类推……粗略估计,使用调试器并不总是方便的。不过我并不担心它,只用Object Dumper就好了。

  要用它,只需要在你的项目中加入ObjectDumper.cs。

  最简单的用法,你可以简单的的传入任何对象给ObjectDumper:

var z = new
{
    A = "1",
    B = "2"
};

ObjectDumper.Write(z);

  这段代码将产生以下输出:

A=1     B=2

 

  通常你会有一个嵌套的集合:

var z = new
{
    Aaa = "Hello",
    Bbb = "There",
    Ccc = new[] { 1, 2, 3 }
};

ObjectDumper.Write(z);

 

  输出:

Aaa=Hello       Bbb=There       Ccc=...

  

  这个时侯,查看到嵌套集合中的内容将会非常有用,因此你可以传递一个附加的参数给ObjectDumper ,来告诉它输出嵌套集合的第一层:

var z = new
{
    Aaa = "Hello",
    Bbb = "There",
    Ccc = new[] { 1, 2, 3 }
};

ObjectDumper.Write(z, 1);

 

  这段代码将产生以下输出:

Aaa=Hello       Bbb=There       Ccc=...
  Ccc: 1
  Ccc: 2
  Ccc: 3
 

你可以在随Visual Studio 2008一起安装的CSharpSamples.zip文件中找到Object Dumper。

C:\Program Files\Microsoft Visual Studio 9.0\Samples\1033\CSharpSamples.zip

因为我要做很多SharePoint和Hyper-V的开发,我的开发计算机上运行着64为的Windows Server 2008,因此就我来说,CSharpSamples.zip的位置是:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\Samples\1033\CSharpSamples.zip

 -----------------------原文完------------------------------

【因水平有限,错误在所难免,欢迎批评指正!】

除了原作者所说的方式,你还可以通过一下方式获得ObjectDumper:

1.NuGet

Install-Package ObjectDumper

2.在CodePlex站点下载

http://objectdumper.codeplex.com/

如果认为此文对您有帮助,别忘了支持一下哦!

作者:齐飞

来源:http://youring2.cnblogs.com/

声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

转载:http://www.cnblogs.com/youring2/archive/2012/06/06/2539019.html

时间: 2024-09-25 11:56:35

【译】Object Dumper: 函数式程序设计编码中的强大工具的相关文章

[译] JavaScript 的函数式编程是一种反模式

本文讲的是[译] JavaScript 的函数式编程是一种反模式, 原文地址:Functional programming in JavaScript is an antipattern 原文作者:Alex Dixon 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:sunui 校对者:LeviDing.xekri 其实 Clojure 更简单些 写了几个月 Clojure 之后我再次开始写 JavaScript.就在我试着写一些很普通的东西的时候,我

[译]跌宕起伏的函数式编程(软件编写)(第一部分)

本文讲的是[译]跌宕起伏的函数式编程(软件编写)(第一部分), 烟雾的方块艺术 -MattysFlicks -(CC BY 2.0) 注意:这是从基础学习函数式编程和使用 JavaScript ES6+ 编写软件的第一部分.保持关注,接下来还有很多! 当我 6 岁时,我花了很多时间跟我的小伙伴玩电脑游戏,他家有一个装满电脑的房间.对于我说,它们有不可抗拒的魔力.我花了很多时间探索所有的游戏.一天我问他,"我们怎样做一个游戏?" 他不知道,所以我们问了他的老爸,他的老爸爬上一个很高的架子

【译】如何在 Webpack 2 中使用 tree-shaking

本文讲的是[译]如何在 Webpack 2 中使用 tree-shaking, 原文地址:How to do proper tree-shaking in Webpack 2 原文作者:Gábor Soós 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:薛定谔的猫 校对者:lsvih.lampui 如何在 Webpack 2 中使用 tree-shaking tree-shaking 这个术语首先源自 Rollup -- Rich Harris 写的

[译] Bob,函数式编程是什么鬼?

本文讲的是[译] Bob,函数式编程是什么鬼?, 原文地址:Intro to Swift Functional Programming with Bob 原文作者:Bob Lee 译文出自:掘金翻译计划 译者:Deepmissea 校对者:thanksdanny,Germxu Bob,函数式编程是什么鬼? 写给年轻的自己的教程 老司机怎么开车,我们就怎么开 函数式编程? 你懂的.很多人都讨论它.你 Google 一下然后看了看前五篇文章,令人沮丧的是,你发现大部分文章只给出一个含糊不清的 Wik

Active Object并发模式在Java中的应用

简介:Active Object 是并发编程实践中典型的设计模式,Active Object 模式的核心是通过解耦合 方法的调用与执行来提高程序的并发度.本文将从典型 Active Object 设计模式入手,从一个新的视角 来探讨 Active Object 并发模式在 Java 中的应用. 本文主要从以下两个方面进行阐述: 使用 C++ 语言,来描述 Active Object 设计模式. Java 类库对于这样一个典型的模式做了很好的类库层面的封装,因此对于 Java 的开发者来说,很多

x264代码剖析(十六):核心算法之宏块编码中的量化编码

x264代码剖析(十六):核心算法之宏块编码中的量化编码           为了进一步节省图像的传输码率,需要对图像进行压缩,通常采用变换编码及量化来消除图像中的相关性以减少图像编码的动态范围.本文主要介绍量化的相关内容,并给出x264中量化编码的代码分析.   1.量化编码           量化过程就是根据图像的动态范围大小确定量化参数,既保留图像必要的细节,又可以减少码流.在图像编码中,变换编码和量化从原理上讲是两个独立的过程.但在H.264中,将两个过程中的乘法合二为一,并进一步采用

x264代码剖析(十五):核心算法之宏块编码中的变换编码

x264代码剖析(十五):核心算法之宏块编码中的变换编码           为了进一步节省图像的传输码率,需要对图像进行压缩,通常采用变换编码及量化来消除图像中的相关性以减少图像编码的动态范围.本文主要介绍变换编码的相关内容,并给出x264中变换编码的代码分析.   1.变换编码           变换编码将图像时域信号变换成频域信号,在频域中图像信号能量大部分集中在低频区域,相对时域信号,码率有较大的下降. H.264对图像或预测残差采用4×4整数离散余弦变换技术,避免了以往标准中使用的通

helloworld-error MSB4025: 未能加载项目文件。给定编码中的字符无效。

问题描述 error MSB4025: 未能加载项目文件.给定编码中的字符无效. 很简单的静态库编译出现了问题定义了头文件:Function.hvoid Print(); c++文件:Function.cpp #include ""Function.h""void Print(){ std::cout<<""HelloWorld!!!""<<std::endl;} 然后,点击build,报错如下:1&g

focus-extjs编码中文本框获得焦点后无法进行其他交互

问题描述 extjs编码中文本框获得焦点后无法进行其他交互 events:[{id : 'code', event : 'blur', fn : 'doCheckCode'}], doCheckCode:function(textField,blur,eOpts){ var view = this.view; var value = view.getCmp("code").getValue(); if(("NEW"==view.uistatus)&&