c#扩展方法的使用,实现的几个功能
用扩展类写了一个管理类:
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#扩展方法的使用,实现的几个功能的更多相关文章
- C#中的反射和扩展方法的运用
前段时间做了一个练手的小项目,采用的是三层架构,也就是Models,IDAL,DAL,BLL 和 Web , 在DAL层中各个类中有一个方法比较常用,那就是 RowToClass ,顾名思义,也就是将 ...
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇
最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...
- C#的扩展方法解析
在使用面向对象的语言进行项目开发的过程中,较多的会使用到“继承”的特性,但是并非所有的场景都适合使用“继承”特性,在设计模式的一些基本原则中也有较多的提到. 继承的有关特性的使用所带来的问题:对象的继 ...
- 扩展方法(C#)
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 下面的示例为String添加 ...
- 扩展方法解决LinqToSql Contains超过2100行报错问题
1.扩展方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...
- C#扩展方法
扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法就相当于一个马甲,给一个现有类套上,就可以为这个类添加其他方法了. 马甲必须定义为stati ...
- 枚举扩展方法获取枚举Description
枚举扩展方法 /// <summary> /// 扩展方法,获得枚举的Description /// </summary> /// <param name="v ...
- 扩展方法 1 简单的string扩展方法
这里是关于 String的简单扩展方法 (静态类 静态方法 this 类型 这里是string) static class Program { static void Main(string[] ar ...
随机推荐
- DFS(dfs)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2212 DFS Time Limit: 5000/2000 MS (Java/Others) Me ...
- a*b(mod m)的实现过程
/*a*b (mod m) 的实现过程*/ /*当a,b很大的时候mod m就会产生溢出, 故运用乘法原理转换为加法求解*/ LL multi(LL a, LL b, LL m) { LL exp = ...
- BASH 学习笔记小结
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...
- 基础二 day4
昨日回顾int bit_lenth()bool int ----> bool 非零True,0 False bool----> True 1 False 0 str ----> bo ...
- 关于jquery ajax跨域请求获取response headers问题
背景:最近项目jwt用户认证方式,关于jwt本人就不再赘述,大家可自行百度. jwt token基本流程是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一 ...
- 十二个 ASP.NET Core 例子——过滤器
目录: 过滤器介绍 过滤器类别 自定义过滤器和过滤特性 直接短路返回内容 过滤器与中间件的区别 如果要全局日志,不要用过滤器 官方文档传送门 1.过滤器介绍 没有权限直接返回,资源缓存,Action执 ...
- windows 防火墙拦截nginx的问题
今天在azure vm上安装了nginx并配置了代理设置,但域名访问始终无法中转,一开始怀疑是nginx的服务没起来,但在本地访问localhost看下如下界面,证明服务是没问题的. 本地访问没问题, ...
- 各大型邮箱smtp服务器及端口收集
>新浪邮箱smtp服务器 外发服务器:smtp.vip.sina.com 收件服务器:pop3.vip.sina.com 新浪免费邮件 外发服务器:smtp.sina.com.cn 收件服务器: ...
- Oracle问题之ORA-12560TNS:协议适配器错误
Oracle问题之ORA-12560TNS:协议适配器错误 一.造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始-- ...
- glusterfs 步骤
一.下载yum源 # wget http://download.gluster.org/pub/gluster/glusterfs/3.6/LATEST/CentOS/glusterfs-epel.r ...