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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值