Extension methods

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

猜你喜欢

转载自eve.iteye.com/blog/1992416