当前位置: 首页 > news >正文

C#笔记

  • 使用关键字作为变量名,需要在变量名前加 @

public string @event { get; set; }

  • VS(2015)智能提示汉化

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\zh-Hans内的文件复制到\v4.5\zh-Hans。重启vs

  • RequestUtility

public class RequestUtility
{
    public const string Application_X_WWW_Form_UrlEncoded = "application/x-www-form-urlencoded;charset=utf-8;";
    public const string Multipart_Form_Data = "multipart/form-data;";
    public const string Application_JSON = "application/json;charset=utf-8;";
    public const string Text_XML = "text/xml;";

    public Result<string> RequestHttpByGet(string _url)
    {
        var rslt = new Result<string>();

        if (string.IsNullOrEmpty(_url))
        {
            rslt.Message = "请求的目标地址无效。";
            return rslt;
        }

        var rqst = (HttpWebRequest)WebRequest.Create(_url);
        rqst.Method = "get";

        try
        {
            using (var response = rqst.GetResponse())
            {
                using (var strm = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        rslt.State = true;
                    }
                }
            }
        }
        catch (WebException err)
        {
            rslt.Message = err.Message;
            try
            {
                using (var strm = err.Response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        return rslt;
                    }
                }
            }
            catch (Exception err2)
            {
                rslt.Message += " - " + err2.Message;
                return rslt;
            }
        }
        catch (Exception err)
        {
            rslt.Message = err.Message;
            return rslt;
        }

        return rslt;
    }

    public Result<string> RequestHttpByGet(string _url, Encoding _encoding)
    {
        var rslt = new Result<string>();

        if (string.IsNullOrEmpty(_url))
        {
            rslt.Message = "请求的目标地址无效。";
            return rslt;
        }

        var rqst = (HttpWebRequest)WebRequest.Create(_url);
        rqst.Method = "get";

        try
        {
            using (var response = rqst.GetResponse())
            {
                using (var strm = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm, _encoding))
                    {
                        rslt.Data = reader.ReadToEnd();
                        rslt.State = true;
                    }
                }
            }
        }
        catch (WebException err)
        {
            rslt.Message = err.Message;
            try
            {
                using (var strm = err.Response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        return rslt;
                    }
                }
            }
            catch (Exception err2)
            {
                rslt.Message += " - " + err2.Message;
                return rslt;
            }
        }
        catch (Exception err)
        {
            rslt.Message = err.Message;
            return rslt;
        }

        return rslt;
    }

    /// <summary>
    /// post请求【application/json】
    /// </summary>
    /// <param name="_parmJson">参数json</param>
    public Result<string> RequestHttpByPost(string _url, string _parmJson)
    {
        var rslt = new Result<string>();

        if (string.IsNullOrEmpty(_url))
        {
            rslt.Message = "请求的目标地址无效。";
            return rslt;
        }

        var rqst = (HttpWebRequest)WebRequest.Create(_url);
        rqst.Method = "post";
        rqst.ContentType = Application_JSON;

        var parm = Encoding.UTF8.GetBytes(_parmJson);
        rqst.ContentLength = parm.Length;
        using (var strm = rqst.GetRequestStream())
        {
            strm.Write(parm, 0, parm.Length);
        }

        try
        {
            using (var response = rqst.GetResponse())
            {
                using (var strm = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        rslt.State = true;
                    }
                }
            }
        }
        catch (WebException err)
        {
            rslt.Message = err.Message;
            try
            {
                using (var strm = err.Response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        return rslt;
                    }
                }
            }
            catch (Exception err2)
            {
                rslt.Message += " - " + err2.Message;
                return rslt;
            }
        }
        catch (Exception err)
        {
            rslt.Message = err.Message;
            return rslt;
        }

        return rslt;
    }

    /// <summary>
    /// post请求【form】
    /// </summary>
    /// <param name="_parm">参数</param>
    public Result<string> RequestHttpByPost(string _url, Dictionary<string, string> _parm = null)
    {
        var rslt = new Result<string>();

        if (string.IsNullOrEmpty(_url))
        {
            rslt.Message = "请求的目标地址无效。";
            return rslt;
        }

        var rqst = (HttpWebRequest)WebRequest.Create(_url);
        rqst.Method = "post";
        rqst.ContentType = Application_X_WWW_Form_UrlEncoded;

        if (_parm != null && _parm.Count > 0)
        {
            var sbParm = new StringBuilder();
            foreach (var itmParm in _parm)
            {
                sbParm.Append($"{itmParm.Key}={itmParm.Value}&");
            }
            sbParm.Remove(sbParm.Length - 1, 1);

            var parm = Encoding.UTF8.GetBytes(sbParm.ToString());
            rqst.ContentLength = parm.Length;

            using (var strm = rqst.GetRequestStream())
            {
                strm.Write(parm, 0, parm.Length);
            }
        }

        try
        {
            using (var response = rqst.GetResponse())
            {
                using (var strm = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        rslt.State = true;
                    }
                }
            }
        }
        catch (WebException err)
        {
            rslt.Message = err.Message;
            try
            {
                using (var strm = err.Response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        return rslt;
                    }
                }
            }
            catch (Exception err2)
            {
                rslt.Message += " - " + err2.Message;
                return rslt;
            }
        }
        catch (Exception err)
        {
            rslt.Message = err.Message;
            return rslt;
        }

        return rslt;
    }

    /// <summary>
    /// 上传文件【formdata】
    /// 若多文件上传,则可将 _file 参数改为 list 类型
    /// </summary>
    /// <param name="_file">文件:item1【文件key】;item2【文件名】;item3【文件二进制】</param>
    /// <param name="_parm">附加参数</param>
    public Result<string> RequestHttpByPost(string _url, Tuple<string, string, byte[]> _file, Dictionary<string, string> _parm = null)
    {
        var rslt = new Result<string>();

        #region 生成 boundary

        var chars = new char[] {
       '0', '1','2','3','4','5','6','7','8','9',
       'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
       'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
    };

        short _Len = 6, bLen = 11, cLen = (short)chars.Length;

        var sbBoundary = new StringBuilder(_Len + bLen);

        for (var i = 0; i < _Len; i++)
            sbBoundary.Append("-");
        var r = new Random();
        for (var i = 0; i < bLen; i++)
            sbBoundary.Append(chars[r.Next(0, cLen)]);

        var boundary = sbBoundary.ToString();
        #endregion

        var rqst = (HttpWebRequest)WebRequest.Create(_url);
        rqst.Method = "POST";
        rqst.ContentType = $"{Multipart_Form_Data}boundary={boundary}";

        var enter = "\r\n";

        #region 定义请求体中的内容 并转成二进制

        var sbParm = new StringBuilder();
        // 普通数据
        if (_parm != null)
        {
            foreach (var itm in _parm)
            {
                sbParm.Append($"--{boundary}{enter}Content-Disposition:form-data;name=\"{itm.Key}\"{enter}{enter}{itm.Value}{enter}");
            }
        }
        // 文件描述数据
        sbParm.Append($"--{boundary}{enter}Content-Disposition:form-data;name=\"{_file.Item1}\";filename=\"{_file.Item2}\"{enter}Content-Type:application/octet-stream{enter}{enter}");
        var parmBytes = Encoding.UTF8.GetBytes(sbParm.ToString());

        // 结尾数据
        var end = $"{enter}--{boundary}--{enter}";
        var endBytes = Encoding.UTF8.GetBytes(end);

        rqst.ContentLength = parmBytes.Length + _file.Item3.Length + endBytes.Length;

        using (var strm = rqst.GetRequestStream())
        {
            strm.Write(parmBytes, 0, parmBytes.Length);
            strm.Write(_file.Item3, 0, _file.Item3.Length);
            strm.Write(endBytes, 0, endBytes.Length);
        }

        #endregion

        try
        {
            using (var response = rqst.GetResponse())
            {
                using (var strm = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm, Encoding.UTF8))
                    {
                        rslt.Data = reader.ReadToEnd();
                        rslt.State = true;
                    }
                }
            }
        }
        catch (WebException err)
        {
            rslt.Message = err.Message;
            try
            {
                using (var strm = err.Response.GetResponseStream())
                {
                    using (var reader = new StreamReader(strm))
                    {
                        rslt.Data = reader.ReadToEnd();
                        return rslt;
                    }
                }
            }
            catch (Exception err2)
            {
                rslt.Message += " - " + err2.Message;
                return rslt;
            }
        }
        catch (Exception err)
        {
            rslt.Message = err.Message;
            return rslt;
        }

        return rslt;
    }
}
复制代码
  • Result

public class Result
{
    public bool State { get; set; }
    public string Message { get; set; }

    #region 构造函数

    public Result(bool _state)
    {
        State = _state;
    }

    public Result() : this(false) { }

    public Result(string _msg) : this(false)
    {
        Message = _msg;
    }

    public Result(bool _state, string _msg) : this(_state)
    {
        Message = _msg;
    }

    #endregion
}

public class Result<T> : Result
{
    public T Data { get; set; }

    #region 构造函数

    public Result() : base() { }

    public Result(bool _state) : base(_state) { }

    public Result(string _msg) : base(_msg) { }

    public Result(bool _state, string _msg) : base(_state, _msg) { }

    public Result(T _data) : base(true)
    {
        Data = _data;
    }

    public Result(bool _state, T _data) : base(_state)
    {
        Data = _data;
    }

    public Result(bool _state, string _msg, T _data)
    {
        State = _state;
        Message = _msg;
        Data = _data;
    }

    #endregion
}
复制代码
  • 常用基础方法

/// <summary>
/// 遍历枚举值
/// </summary>
public List<int> GetEnumValues<T>() where T : struct
{
    var rslt = new List<int>();

    var tType = typeof(T);
    if (!tType.IsEnum)
        return rslt;

    rslt = Enum.GetValues(tType).Cast<int>().ToList();

    return rslt;
}

/// <summary>
/// 获取枚举项的描述文本
/// </summary>
public string GetDescription<T>(this T _v) where T : struct
{
    var vType = typeof(T);
    if (!vType.IsEnum)
        return null;

    var tName = vType.FullName;

    //emDescriptionCache.ContainsKey("");

    var fieldInfo = vType.GetField(_v.ToString());

    var attr = (DescriptionAttribute)fieldInfo?.GetCustomAttribute(typeof(DescriptionAttribute), false);

    return attr?.Description;
}

/// <summary>
/// 删除字符串中的中文
/// </summary>
public string DeleteChinese(string _string)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(_string, @"[\u4e00-\u9fa5]"))
        return _string;

    var newString = new StringBuilder();
    var chars = _string.ToCharArray();
    for (int idx = 0, len = chars.Length; idx < len; idx++)
    {
        if (chars[idx] >= 0x4e00 && chars[idx] <= 0x9fa5)
            continue;

        newString.Append(chars[idx]);
    }

    return newString.ToString();
}

/// <summary>
/// 获取当前时间的总时,分,秒等
/// </summary>
public long getTotalTime(this DateTime _v, emDTType _dtType = emDTType.millisecond)
{
    var ticks = _v.Ticks;
    long v;
    switch (_dtType)
    {
        case emDTType.millisecond:
            v = ticks / 10000;
            break;
        case emDTType.second:
            v = ticks / 10000 / 1000;
            break;
        case emDTType.minute:
            v = ticks / 10000 / 1000 / 60;
            break;
        case emDTType.hour:
            v = ticks / 10000 / 1000 / 60 / 60;
            break;
        case emDTType.day:
            v = ticks / 10000 / 1000 / 60 / 60 / 24;
            break;
        default:
            v = 0;
            break;
    }

    return v;
}

public enum emDTType
{
    millisecond = 0,
    second = 1,
    minute = 2,
    hour = 3,
    day = 4
}
复制代码
  • DateUtility

转载于:https://juejin.im/post/5b470511e51d45191252fb3a

相关文章:

  • 第三章 图像的几何变换
  • asp.net给文件分配自己主动编号,如【20140710-1】
  • Python入门经典 以解决计算问题为导向的Python编程 待完好
  • Linuxshell编程
  • 华硕笔记本BIOS设置详解
  • Apache Kafka源码剖析:第7篇 日志存储系列2-FileMessageSet
  • Linux常见命令总结
  • 作用域
  • 二 APPIUM Android自动化 环境搭建(转)
  • [20170713] 无法访问SQL Server
  • elaselasticsearch分片交互过程
  • Visual Studio 2017使用
  • springboot devtools 嵌套jar 序列化错误 java.lang.ClassCastException 完美解决方案
  • lab5打卡
  • 折腾了几个月,终于调教出一架可以抢车位的无人机。然而…
  • classpath对获取配置文件的影响
  • eclipse(luna)创建web工程
  • Golang-长连接-状态推送
  • hadoop集群管理系统搭建规划说明
  • input实现文字超出省略号功能
  • Java IO学习笔记一
  • Javascripit类型转换比较那点事儿,双等号(==)
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Otto开发初探——微服务依赖管理新利器
  • React系列之 Redux 架构模式
  • spring学习第二天
  • SQLServer插入数据
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Swift 中的尾递归和蹦床
  • vue中实现单选
  • 嵌入式文件系统
  • 区块链技术特点之去中心化特性
  • 如何在 Tornado 中实现 Middleware
  • 使用parted解决大于2T的磁盘分区
  • 树莓派 - 使用须知
  • 昨天1024程序员节,我故意写了个死循环~
  • ​水经微图Web1.5.0版即将上线
  • #13 yum、编译安装与sed命令的使用
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (转)菜鸟学数据库(三)——存储过程
  • (转)重识new
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .describe() python_Python-Win32com-Excel
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net访问oracle数据库性能问题
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • @JoinTable会自动删除关联表的数据
  • @SentinelResource详解
  • @Service注解让spring找到你的Service bean
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成