public static T As<T>(this object obj) where T : class { return obj as T; } public static bool Contains(this string source, string toCheck, StringComparison comp) { return source.IndexOf(toCheck, comp) >= 0; } public static bool Contains(this IEnumerable<string> container, string toCheck, StringComparison comp) { return container.Any(c => string.Equals(c, toCheck, comp)); } public static string GetDescription(this Enum value) { var field = value.GetType().GetField(value.ToString()); var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)).As<DescriptionAttribute>(); return attribute == null ? value.ToString() : attribute.Description; } public static T DeepClone<T>(this T obj) { using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); ms.Position = 0; return (T)formatter.Deserialize(ms); } } public static T DeepCloneDataContract<T>(this T obj) { using (var ms = new MemoryStream()) { var dcs = new DataContractSerializer(typeof(T)); dcs.WriteObject(ms, obj); ms.Position = 0; return (T)dcs.ReadObject(ms); } } public static object GetPropValue(this object src, string propName) { try { return src.GetType().GetProperty(propName).GetValue(src, null); } catch { return string.Empty; } } public static string ToExcelColumn(this int columnIndex) { var columnString = ""; var columnNumber = columnIndex; while (columnNumber > 0) { var currentLetterNumber = (columnNumber - 1) % 26; var currentLetter = (char)(currentLetterNumber + 65); columnString = currentLetter + columnString; columnNumber = (columnNumber - (currentLetterNumber + 1)) / 26; } return columnString; } public static int ToColumnIndex(this string excelColumn) { var retVal = 0; var col = excelColumn.ToUpper(); for (var iChar = col.Length - 1; iChar >= 0; iChar--) { var colPiece = col[iChar]; var colNum = colPiece - 64; retVal = retVal + colNum * (int)Math.Pow(26, col.Length - (iChar + 1)); } return retVal; } public static string GetVariableName<T>(this Expression<Func<T>> expr) { return expr.Body.As<MemberExpression>().Member.Name; }
Extension methods
猜你喜欢
转载自eve.iteye.com/blog/1992416
今日推荐
周排行