TOP

Z.ExtensionMethods 一个强大的开源扩展库(一)
2019-09-03 03:27:09 】 浏览:46
Tags:Z.ExtensionMethods 一个 强大 开源 扩展

    今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提到而已,没有专门介绍,才引起我写这篇文档。

一.      Z.ExtensionMethods 介绍

    Z.ExtensionMethods 是国外(zzzprojects 的公司,这家公司开发EntityFramework 扩展库也很牛逼哦,不过要收费)开源的,且功能齐全,围绕着.NET Framework 而开发扩展类库,源代码C#&VB.NET两种语言。

Codeplex :http://zextensionmethods.codeplex.com/

GitHub:https://github.com/zzzprojects/Z.ExtensionMethods

在线文档:http://www.zzzprojects.com/documentations/dotnet/extension-methods/

 

贴一个Z.Data 对DataTable 转成 集合对象扩展,让大家伙开开眼,看这些代码熟悉不?

using System; using System.Collections.Generic; using System.Data; using System.Reflection; public static partial class Extensions { /// 
    /// Enumerates to entities in this collection. /// 
    /// Generic type parameter.
    /// The @this to act on.
    /// @this as an IEnumerable<T>
    public static IEnumerable ToEntities(this DataTable @this) where T : new() { Type type = typeof (T); PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance); var list = new List(); foreach (DataRow dr in @this.Rows) { var entity = new T(); foreach (PropertyInfo property in properties) { if (@this.Columns.Contains(property.Name)) { Type valueType = property.PropertyType; property.SetValue(entity, dr[property.Name].To(valueType), null); } } foreach (FieldInfo field in fields) { if (@this.Columns.Contains(field.Name)) { Type valueType = field.FieldType; field.SetValue(entity, dr[field.Name].To(valueType)); } } list.Add(entity); } return list; } }

是不是感觉,之前我们自己写过这样的代码,现在不用自己写了,现成的拿来用就是,自己可以更加专注于更有意义的事情上,再来一段代码。

public static partial class Extensions { /// 
    /// A string extension method that queries if '@this' is null or is empty. /// 
    /// The @this to act on.
    /// true if '@this' is null or is empty, false if not.
    public static bool IsNullOrEmpty(this string @this) { return string.IsNullOrEmpty(@this); } }

判断字符串是否为空或Null,"字符串".IsNullOrEmpty()  是不是更加能够理解,感觉就像读一句话一样,

像这样的DataTable转对象集合以及判断一个对象是否为空或者Null人性写法,在Z.ExtensionMethods 扩展类库里面到处能够找到,大家有空可以打开它的源代码学习一下。

一.      Z.ExtensionMethods 使用

 1. 通过NuGet 程序包管理器,下载Z.ExtensionMethods Dll,右键-》你需要使用 Z.ExtensionMethods 类库 项目-》管理NuGet程序包-》联机-》右上角搜索“Z.ExtensionMethods” 下载安装

 2.  使用起来很简单,下面是几段单元测试代码

using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Z.Core.Test { [TestClass] public class System_String_ToEnum { [TestMethod] public void ToEnum() { // Type
            string @this = "Ordinal"; // Examples
            var value = @this.ToEnum(); // return StringComparison.Ordinal; // Unit Test
 Assert.AreEqual(StringComparison.Ordinal, value); } } }
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Z.Core.Test { [TestClass] public class System_String_IsNullOrEmpty { [TestMethod] p  
		
Z.ExtensionMethods 一个强大的开源扩展库(一) https://www.cppentry.com/bencandy.php?fid=106&id=248929

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#和ASP.NET之事件 下一篇AutoMapper 使用实践

kafka-
kafka   Partit
解决android studio
Kafka史上最详细原理
Error while fetchin
【Kafka】安装与快速
    &
flume读取日志数据写
Authentication plug
Flume 自定义source
flume   三大核
ICC副本>>>
愚公移山  
Hbase架构   Hb
5 hbase-shell + &
Hbase   MapRed
MetaException(messa
Exception in thread
HIVE metastore Dupl
-->