C#记录日志、获取枚举值 等通用函数列表
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; namespace System.Web.Mvc
{
#region 通用函数
/// <summary>
/// 通用函数
/// </summary>
public class Common
{
#region IP地址转换
/// <summary>
/// 将IP地址转换为数值
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public static long Ip2Long(string ip)
{
var ipaddr = ip.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
if (ipaddr.Length == 4)
{
var ipvals = ipaddr.Select(p => int.Parse(p)).ToList();
if (ipvals[0] >= 0 && ipvals[0] <= 255
&& ipvals[1] >= 0 && ipvals[1] <= 255
&& ipvals[2] >= 0 && ipvals[2] <= 255
&& ipvals[3] >= 0 && ipvals[3] <= 255)
return (long)ipvals[0] << 24 + ipvals[1] << 16 + ipvals[2] << 8 + ipvals[3];
}
return -1;
} /// <summary>
/// 将IP地址转换为字符串
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public static string Ip2String(long ip)
{
var ipvals = "";
ipvals = (ip % 256).ToString();
ip = ip / 256;
ipvals = (ip % 256).ToString() + "." + ipvals;
ip = ip / 256;
ipvals = (ip % 256).ToString() + "." + ipvals;
ipvals = (ip / 256).ToString() + "." + ipvals;
return ipvals;
} /// <summary>
/// Server.PapPath()重写
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static string MapPath(string path)
{
var currentDir = AppDomain.CurrentDomain.BaseDirectory;
path = path.Replace("~", currentDir);
path = System.IO.Path.GetFullPath(path);
return path;
} public static void Log(Exception ex)
{
Log(ex.ToString());
} public static void Log(string ex)
{
var fd = Common.MapPath("~/Logs/");
if (!System.IO.Directory.Exists(fd)) System.IO.Directory.CreateDirectory(fd); var fp = fd + string.Format("l_{0:yyyyMMddHH}.log", DateTime.Now);
using (var f = System.IO.File.AppendText(fp))
{
f.Write(ex);
}
}
#endregion #region 枚举通用函数
/// <summary>
/// 获取枚举类型列表
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <returns></returns>
public static SortedList GetEnumList<T>()
{
var t = typeof(T);
SortedList sl = new SortedList();
Array a = Enum.GetValues(t);
for (int i = 0; i < a.Length; i++)
{
string name = a.GetValue(i).ToString();
int key = (int)a.GetValue(i);
string desc = GetEnumDesc<T>(key);
sl.Add(key, desc);
}
return sl;
} /// <summary>
/// 获取枚举类型名称
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="enumValue">枚举值</param>
/// <returns></returns>
public static string GetEnumName<T>(object enumValue)
{
try
{
return Enum.GetName(typeof(T), enumValue);
}
catch
{
return "NA";
}
} /// <summary>
/// 获取枚举类型描述
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="enumValue">枚举值</param>
/// <returns></returns>
public static string GetEnumDesc<T>(object enumValue)
{
try
{
var t = typeof(T);
DescriptionAttribute[] attrs = (DescriptionAttribute[])t.GetField(GetEnumName<T>(enumValue)).GetCustomAttributes(typeof(DescriptionAttribute), false);
return ((attrs.Length > 0) ? attrs[0].Description : GetEnumName<T>(enumValue));
}
catch
{
return "NA";
}
}
#endregion }
#endregion
}
C#记录日志、获取枚举值 等通用函数列表的更多相关文章
- 获取枚举值上的Description特性说明
/// <summary> /// 获取枚举值上的Description特性说明 /// </summary> /// <typeparam name="T&q ...
- c# 枚举的定义,枚举的用法,获取枚举值
1.定义枚举类型 public enum Test { 男 = , 女 = } 2.获取枚举值 public void EnumsAction() { var s = Test.男;//男 var a ...
- C# .NET 获取枚举值的自定义属性(特性/注释/备注)信息
一.引言 枚举为我看日常开发的可读性提供的非常好的支持,但是有时我们需要得到枚举值得描述信息或者是注释(备注)信息 比如要获得 TestEmun.aaa 属性值得备注 AAA,比较不方便得到. pub ...
- C# .NET 获取枚举值的自定义属性
一.定义一个类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- C# 获取枚举值/获取名字和值
枚举 int 转 枚举名称 public void Test() { //调用 string name1= ConvertEnumToString<ActionLogType>(1); s ...
- C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素
/// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtension { private stat ...
- OSS.Common获取枚举字典列表标准库支持
上篇(.Net Standard扩展支持实例分享)介绍了OSS.Common的标准库支持扩展,也列举了可能遇到问题的解决方案.由于时间有限,同时.net standard暂时还没有提供对Descrip ...
- c#枚举 获取枚举键值对、描述等
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.C ...
- c#枚举值增加特性说明
c#枚举值增加特性说明 通过特性给一个枚举类型每个值增加一个字符串说明,用于打印或显示. 自定义打印特性 [AttributeUsage(AttributeTargets.Field)] public ...
随机推荐
- BeagleBone Black教训四局:简单LED对照实验
BBB教训四局:简单LED对照实验 学习BBB董事会最终目的是做同样的想象单片机控制.但控制是不一样的想法,在所有(Linux在本质上,硬件设备的控制,以虚拟文件有关的设备下的读写),研究了几天头都大 ...
- QlikView同button控制转换图表类型(例如,变成一个垂直的条形图)
QlikView图表可以通过检查一些可以为图表类型的转换非常方便进行配置,允许用户选择上面的图就是看条形图或柱状图或垂直方向图detail数据. 在Fast Type Change中选中如上图所看到的 ...
- Java中使用Lua脚本语言(转)
Lua是一个实用的脚本语言,相对于Python来说,比较小巧,但它功能并不逊色,特别是在游戏开发中非常实用(WoW采用的就是Lua作为脚本的).Lua在C\C++的实现我就不多说了,网上随便一搜,到处 ...
- 探索WebKit核心(一)------ 新秀开始
为什么WebKit 现在,研究人员WebKit越来越多的人,我不能逃脱,其中还增加.WebKit也多亏了流行的浏览器和WebOS乱斗.随着Palm WebOS, Chrome OS, Firefox ...
- SecureCRT使用提示
一旦itpub我写上面,我不知道这个博客的背后,我们无法上传和修改内容.好恼火啊! 原文链接:SecureCRT的几个使用方法设置 在原文的基础上,再补充几个功能: 1.最好将全部设置定制在Globa ...
- 【C语言探索之旅】 第二部分第六课:创建你自己的变量类型
内容简介 1.课程大纲 2.第二部分第六课: 创建你自己的变量类型 3.第二部分第七课预告: 文件读写 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...
- 文件搜索神器everything 你不知道的技巧总结
everything这个软件用了很久,总结了一些大家可能没注意到的技巧,分享给大家 1.指定文件目录搜索示例: TDDOWNLOAD\ abc 在所有TDDOWNLOAD文件夹下搜索包含 ...
- 为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制
服务器经常产生“应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制.进程 ID 是 '2068'.”的错误,导致iis处于假死状态,经了解是IIS应用程序池的设置问题.解决 ...
- 开源Math.NET基础数学类库使用(08)C#进行数值积分
原文:[原创]开源Math.NET基础数学类库使用(08)C#进行数值积分 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...
- 第十七章——配置SQLServer(3)——配置“对即时负载的优化”
原文:第十七章--配置SQLServer(3)--配置"对即时负载的优化" 前言: 在第一次执行查询或者存储过程时,会创建执行计划并存储在SQLServer的过程缓存内存中.在很多 ...