项目中常用的C# 扩展方法

///我们经常使用一些匿名委托来处理一些逻辑///但是在某些情况下,有可能委托是null,要是直接执行可能会抛异常///所以提供此扩展方法,直接可以使用例如 action.Execute() 来执行

namespace System
{
    public static class ActionExtension
    {
        public static void Execute(this Action action)
        {
            if (action != null)
            {
                action();
            }
        }

        public static void Execute<T>(this Action<T> action, T obj)
        {
            if (action != null)
            {
                action(obj);
            }
        }
    }
}
///此段一目明了,模仿 string.IsNullOrEmpty 来判断集合是否为null还是空

namespace System.Linq
{
    using System.Collections.Generic;

    public static class LinqExtension
    {
        /// <summary>
        /// 判定一个IEnumerable集合是否为Null或者是空集合
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <param name="collection"></param>
        /// <returns></returns>
        public static bool IsNullOrEmpty<TSource>(this IEnumerable<TSource> collection)
        {
            return collection == null || !collection.Any();
        }
    }
}
///利用序列化和流执行对象深拷贝

namespace System
{
    using System;
    using System.IO;
    using System.Runtime.Serialization;

    public static class ExtensionMethods
    {
        public static T DeepClone<T>(this object source) where T : class
        {
            if (source == null) { return default(T); }
            using (MemoryStream stream = new MemoryStream())
            {
                var dataContractSerializer = new DataContractSerializer(source.GetType());
                dataContractSerializer.WriteObject(stream, source);
                stream.Position = 0;
                return (T)dataContractSerializer.ReadObject(stream);
            }
        }
    }
}
时间: 2024-10-12 12:17:19

项目中常用的C# 扩展方法的相关文章

Android中常用的bitmap处理方法

收集了很多bitmap相关的处理方法,几乎全部应用在项目中,所以特记录下! package com.tmacsky.utils; import java.io.ByteArrayOutputStream; import java.io.IOException; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.gr

java中常用的包、类、以及包中常用的类、方法、属性-----io包

由于最近有需要,所以下面是我整理的在开发中常用的包.类.以及包中常用的类.方法.属性:有需要的看看 java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.math.*; java.sql.*; java.text.*; java.awt.*; javax.swing.*;   包名 接口 类 方法 属性 java.io.*; java.io.Serializable实现序列化 java.io.Buffe

项目记录:spring+springmvc 项目中 @Transactional 失效的解决方法

第一步,修改spring的配置文件和springmvc的配置文件 --------------------------------applicationContext.xml <context:annotation-config/>  <context:component-scan base-package="com.xxx"> <context:exclude-filter type="annotation" expression=&

Android 项目中执行java的main方法

Android 项目中执行java的main方法 导语 今日,在android项目中写了一个工具类,为了简单测试一下输出,就只直接在类中加上了main方法,于是问题来了: 解决方法是网上找到了,已经解决了,在此记录一下. 右击项目名,调出Properties窗口,打开Run/Debug Settings 标签,右边即列出了这个项目中含有main方法的所有java类,双击你要允许的java类:

Spring中常用的hql查询方法(getHibernateTemplate()) 【转】

一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有User对象 二.find(String queryString , Object value); 示例:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test"); 或模糊查询:th

C#中的反射和扩展方法的运用

前段时间做了一个练手的小项目,名叫Book_Bar,用来卖书的,采用的是三层架构,也就是Models,IDAL,DAL,BLL 和 Web , 在DAL层中各个类中有一个方法比较常用,那就是 RowToClass ,顾名思义,也就是将 DataTable 中的数据封装到 Models 中.结果导致在DAL各个类中写了很多类似的方法,后来就直接把它抽取出来做成了 DataTable和 DataRow的扩展方法, 下面是代码: using System; using System.Collectio

简析项目中常用的七参数转换法和四参数转换法以及涉及到的基本测量学知识

1.背景 在了解这两种转换方法时,我们有必要先了解一些与此相关的基本知识.我们有三种常用的方式来表示空间坐标,分别是:经纬度和高层.平面坐标和高层以及空间直角坐标. 2.经纬度坐标系(大地坐标系) 这里我首先要强调:天文坐标表示的经纬度和大地坐标系表示的经纬度是不同的.所以,同一个经纬度数值,在BJ54和WGS84下表示的是不同的位置,而以下我说的经纬度均指大地坐标系下的经纬度.大地坐标系是大地测量中以参考椭球面为基准面建立起来的坐标系.下面我跟大家大致谈谈其中涉及到的两个重要概念. 2.1大地

Unity 中实用的 C# 扩展方法

Unity 内置组件基本没有可以继承的.某些比较常用但现有 API 没有定义的功能,我们可以通过 C# 的扩展类方法来实现(注意一点,扩展方法对于值类型传递的不是引用,所以无法修改原对象.并且传递体积较大的值类型可能造成性能问题).下面是一些比较实用的扩展方法,这些扩展方法的实现很多使用了 C# 的委托,关于委托可以参考这里:C# 中的 delegate, Lambda 和 event. 扩展 Transform 每一个 GameObject 都含有一个 Transform 组件(在 UGUI

iOS项目中常用的第三方开源库

1.项目使用的第三方开源库 http://github.ibireme.com/github/list/ios/整理了比较常用的iOS第三方组件,以及github上的统计. 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理. 需要注意的是AFNetworking对服务器返回的ContentTy