用扩展类写了一个管理类:

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Interop; namespace CommonClass
{
public static class ExtentionMethods
{
/// <summary>
/// dataRow 获取字段
/// </summary>
/// <param name="dr"></param>
/// <param name="fieldName"></param>
/// <returns></returns>
public static string GetField(this DataRow dr, string fieldName)
{
if (dr.Table.Columns.Contains(fieldName) && dr[fieldName] != null)
{
return dr[fieldName].ToString();
}
else
{
return "";
}
}
/// <summary>
/// Jtoken类型获取字符型字段
/// </summary>
/// <param name="token"></param>
/// <param name="fieldName"></param>
/// <returns></returns>
public static string GetStringField(this JToken token, string fieldName)
{
if (token[fieldName] == null)
{
return "";
}
else
{
return token[fieldName].ToString();
}
}
/// <summary>
/// dictionary添加键和值
/// </summary>
/// <typeparam name="T1"></typeparam>
/// <typeparam name="T2"></typeparam>
/// <param name="dict"></param>
/// <param name="key"></param>
/// <param name="value"></param>
public static void AddKeyValue<T1, T2>(this Dictionary<T1, T2> dict, T1 key, T2 value)
{
if (!dict.ContainsKey(key))
{
dict.Add(key, value);
}
}
/// <summary>
/// 窗体显示在usercontrol上面
/// </summary>
/// <param name="wnd"></param>
/// <param name="uc"></param>
public static void ShowInUserControl(this Window wnd, UserControl uc)
{
HwndSource winformWindow =
(System.Windows.Interop.HwndSource.FromDependencyObject(uc) as System.Windows.Interop.HwndSource);
if (winformWindow != null)
new WindowInteropHelper(wnd) { Owner = winformWindow.Handle };
wnd.Show();
}
/// <summary>
/// 将byte[] 反序列化成object对象
/// </summary>
/// <param name="binaryData">字节数组</param>
/// <returns>object对象</returns>
public static object ToEntity(this byte[] binaryData)
{
MemoryStream ms = new MemoryStream(binaryData);
ms.Seek(0, SeekOrigin.Begin);
IFormatter brFormatter = new BinaryFormatter(); Object obj = brFormatter.Deserialize(ms);
return obj;
}
/// <summary>
/// 将object 序列化成字节数组byte[]
/// </summary>
/// <param name="dsOriginal">object对象</param>
/// <returns>字节数组</returns>
public static byte[] ToByteArray(this object dsOriginal)
{
byte[] binaryDataResult = null;
MemoryStream memStream = new MemoryStream();
IFormatter brFormatter = new BinaryFormatter();
brFormatter.Serialize(memStream, dsOriginal);
binaryDataResult = memStream.ToArray();
memStream.Close();
memStream.Dispose();
return binaryDataResult;
} /// <summary>
/// 克隆-序列化的类
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static T Clone<T>(this T obj)
{
BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, obj); ms.Seek(0, SeekOrigin.Begin); return (T)bf.Deserialize(ms);
} /// <summary>
/// 获取-窗口指针
/// </summary>
/// <param name="win"></param>
/// <returns></returns>
public static IntPtr ToHandle(this Window win)
{
WindowInteropHelper wndHelper = new WindowInteropHelper(win);
IntPtr wpfHwnd = wndHelper.Handle;
return wpfHwnd;
}
/// <summary>
/// 文本ip(0.0.0.0格式) 获取数字ip
/// </summary>
/// <param name="ipString"></param>
/// <returns></returns>
public static UInt32 ToIntIp(this string ipString)
{
UInt32 ip = (UInt32)(IPAddress.Parse(ipString).Address);
return ip;
} }
}

感谢每一位阅读此篇文章的人,希望可以帮到你。

c#扩展方法的使用,实现的几个功能的更多相关文章

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

    前段时间做了一个练手的小项目,采用的是三层架构,也就是Models,IDAL,DAL,BLL 和 Web , 在DAL层中各个类中有一个方法比较常用,那就是 RowToClass ,顾名思义,也就是将 ...

  2. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  3. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  4. 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇

    最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...

  5. C#的扩展方法解析

    在使用面向对象的语言进行项目开发的过程中,较多的会使用到“继承”的特性,但是并非所有的场景都适合使用“继承”特性,在设计模式的一些基本原则中也有较多的提到. 继承的有关特性的使用所带来的问题:对象的继 ...

  6. 扩展方法(C#)

    扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 下面的示例为String添加 ...

  7. 扩展方法解决LinqToSql Contains超过2100行报错问题

    1.扩展方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...

  8. C#扩展方法

    扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法就相当于一个马甲,给一个现有类套上,就可以为这个类添加其他方法了. 马甲必须定义为stati ...

  9. 枚举扩展方法获取枚举Description

    枚举扩展方法 /// <summary> /// 扩展方法,获得枚举的Description /// </summary> /// <param name="v ...

  10. 扩展方法 1 简单的string扩展方法

    这里是关于 String的简单扩展方法 (静态类 静态方法 this 类型 这里是string) static class Program { static void Main(string[] ar ...

随机推荐

  1. [bzoj1783] [Usaco2010 Jan]Taking Turns

    题意: 一排数,两个人轮流取数,保证取的位置递增,每个人要使自己取的数的和尽量大,求两个人都在最优策略下取的和各是多少. 注:双方都知道对方也是按照最优策略取的... 傻逼推了半天dp......然后 ...

  2. python写一个DDos脚本(DOS)

    前言:突然想写,然后去了解原理 DDOS原理:往指定的IP发送数据包(僵尸网络),导致服务器 拒绝服务,无法正常访问. 0x01: 要用到的模块 scapy模块 pip install scapy 或 ...

  3. JAVA开发中遇到的异常总结

    最常见的五种异常:必会,面试题: 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数 ...

  4. CXF之"@XmlType.name 和 @XmlType.namespace 为类分配不同的名称"错误

    CXF 的 wsdl2java.bat 生产的代码,拷贝到目录,进行调研 web service接口时,抛出错误: Exception in thread "main" javax ...

  5. Jfinal——实践出真知

    什么是Jfinal? JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所 ...

  6. lnmp一键安装的卸载

    http://blog.csdn.net/lansetiankong12/article/details/48130507  如果是lnmp一键安装的 进入安装包目录 [root@www home]# ...

  7. destoon 开启邮箱

  8. jquery 循环获取checkBox的值,以及对复选框选中,取消,操作按钮

    法一:jquery 循环获取选中checkBox框的值 function checkeds() { $("input:checkbox").each(function(index) ...

  9. Hadoop集群的JobHistoryServer详解(转载)

    Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map.用了多少个Reduce.作业提交时间.作业启动时间.作业完成时间等信息.默认情况下 ...

  10. Thrift之TProtocol系列TCompactProtocol解析

    TCompactProtocol协议作为TBinaryProtocol协议的升级强化版,都作为二进制编码传输方式,采用了一种乐器MIDI文件的编码方法(wiki,百度下),简单介绍下两种思想: 1: ...