LinQ 定义带有返回类型的扩展方法3.2

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Diagnostics;

namespace ExtensionWithReturn
{
    class Program
    {
        static void Main(string[] args)
        {
            var songs = new
            {
                Artist = "Green Day",
                Song = "Wake Me Up When September Ends"
            };
            Console.WriteLine(songs.Dump());
            Console.ReadLine();
        }
    }
    public static class Dumper
    {
        public static string Dump(this Object o)
        {
            PropertyInfo[] properties = o.GetType().GetProperties();
            StringBuilder builder = new StringBuilder();
            foreach (PropertyInfo p in properties)
            {
                try
                {
                    builder.AppendFormat(string.Format("Name: {0}, Value: {1}", p.Name, p.GetValue(o, null)));
                }
                catch
                {
                    builder.AppendFormat(string.Format("Name: {0}, Value: {1}", p.Name, "unk."));
                }
                builder.AppendLine();
            }
            return builder.ToString();
        }
    }
}

LinQ 定义带有返回类型的扩展方法3.2

时间: 2024-10-29 19:09:37

LinQ 定义带有返回类型的扩展方法3.2的相关文章

Path类型的扩展方法 z

写了一个基于System.IO.Path类型方法的扩展类型,用于快速对文件系统路径进行操作.如下图: 其中有许多方法就是直接调用Path类型的静态方法.比如AppendPath方法内部会直接调用Path.Combine.这些方法就不需要再介绍了.下面看一些许多说明的方法: ToDirectory方法会把一个文件路径放到文件夹路径内并返回结果,比如: var path =@"C:\a\b\c.jpg"; Console.WriteLine(path.ToDirectory(@"

飞波拿鸡(要定义IEnumerable<T>的ForEach扩展方法):

var N = 20; var list = Enumerable.Range(0, N).ToArray(); N = list.ForEach(n => list[n] = n < 2 ? n : list[n - 1] + list[n - 2]).Last(); 飞波拿鸡(要定义IEnumerable<T>的ForEach扩展方法):

C# LiNq的语法以及常用的扩展方法

首先先来扯一下,这篇博文是我第一次写的,主要是我的一些摘录,希望对大家有所帮助. Linq的基础 •LINQ(读音link):Linq To SQL(过时).Linq To Object.Linq To XML.Linq To entity,目的:以统一的方式对数据进行操作.看起来非常像SQL语句,但是和SQL无关. •var关键字,var类型用来简化类型的声明,var i = 2,并不说明i是无类型的,编译器会自动根据右边的值推断(这叫类型推断)var代表的值.var只能用来语句中,不能用在返

return在返回类型为void方法中的妙用

序:我们都知道return是用来返回一个值给主调函数的.但是其实return也有另外一个作用,就是提前结束当前函数的后续执行. -------------------------------------------------------------------------------------Copyright ©2016 ZRY 好了,下面进入正题.... 一.很多情况下,我们在代码中都会遇到需要判断多个条件的情况(需要嵌套多个if else). 例:每满足一个条件都有一个if else(

C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re

LinQ—扩展方法

概述 本节主要讲解扩展方法,涉及LinQ的具体知识不多. 扩展方法的描述 .net framework为编程人员提供了很多的类,很多的方法,但是,不论.net framework在类中为我们提供了多么多的方法,有时候仍然不能满足我们的需求,例如:你想让字符串对象具有ToPascal方法,含义就是将字符串转化为Pascal格式,并返回,我们知道,.net framework提供的String类中并没有为我们提供相应的方法,此时,我们应该怎么做才可以达到我们的目的呢?有人说可以继承String类,这

Linq之扩展方法

目录 写在前面 系列文章 扩展方法 总结 写在前面 上篇文章介绍了隐式类型,自动属性,初始化器,匿名类的相关概念,及通过反编译的方式查看了编译器帮我们做了那些事.本篇文章将介绍扩展方法的知识点,及如何定义,如何使用的相关内容. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 扩展方法 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像

C#原始类型扩展方法—this参数修饰符

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀.仅当您使用 using 指令将命名空间显式导入到源代码中之后,扩

编写高质量代码改善C#程序的157个建议——建议101:使用扩展方法,向现有类型“添加”方法

建议101:使用扩展方法,向现有类型“添加”方法 考虑如何让一个sealed类型具备新的行为.以往我们会创建一个包装器类,然后为其添加方法,而这看上去一点儿也不优雅.我们也许会考虑修改设计,直接修改sealed类型,然后为其发布一个新的版本,但这依赖于你拥有全部的源码.更多的时候,我们会采取针对第三方公司提供的API进行编程的方式.对于我们来说,FCL是一组第三方公司(微软)提供给我们的最好的API. 包装类的编码形式如下: class Program { static void Main(st