• 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;
            }
    
        }
    }
    

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

  • 相关阅读:
    豆瓣api-简单跨域演示
    MVC4 验证用户登录一个特性搞定
    IIS7.5 不能加载外部引用的第三方JS,CSS,img等一系列静态文件
    三合一网站后台密码重置
    anaconda安装 (开源的Python发行版本)
    通达信指标函数说明大全
    织梦CMS如何修改中英文模板的当前位置
    微信小程序上架需要增值电信业务经营许可证ICP?
    PS抠图玻璃杯227
    PS用通道工具人物头发抠图246
  • 原文地址:https://www.cnblogs.com/congqiandehoulai/p/5454587.html
Copyright © 2020-2023  润新知