private static string applicationPath = null;
private static string applicationPhysicalPath = null;
/// <summary>
/// 返回当前Web应用程序的根虚拟目录,结尾不带斜杠/。
/// </summary>
public static string ApplicationPath
{
get
{
if (applicationPath == null) { return VirtualPathUtility.ToAbsolute("~").TrimEnd('/'); //优点:不依赖于HttpContext.Current是否为空
}
return applicationPath;
}
}
/// <summary>
/// 返回当前Web应用程序的根物理目录,结尾不带斜杠/。
/// </summary>
public static string ApplicationPhysicalPath
{
get
{
if (applicationPhysicalPath == null)
{
applicationPhysicalPath = AppDomain.CurrentDomain.BaseDirectory.Replace("/", Path.DirectorySeparatorChar.ToString()).TrimEnd(Path.DirectorySeparatorChar);
}
return applicationPhysicalPath;
}
}
/// <summary>
/// 将虚拟目录映射为物理目录。
/// </summary>
public static string MapPath(string virtualPath)
{
return string.Concat
(
ApplicationPhysicalPath.TrimEnd(Path.DirectorySeparatorChar),
Path.DirectorySeparatorChar.ToString(),
virtualPath.Replace("/", Path.DirectorySeparatorChar.ToString()).Replace("~", "").TrimStart(Path.DirectorySeparatorChar)
);
}
/// <summary>
/// 将一个对象转换为另外一个给定的类型
/// </summary>
public static T ChangeType<T>(object value)
{
if (value == null)
{
return default(T);
}
TypeConverter tc = TypeDescriptor.GetConverter(typeof(T));
if (tc.CanConvertFrom(value.GetType()))
{
return (T)tc.ConvertFrom(value);
}
else
{
return (T)Convert.ChangeType(value, typeof(T));
}
}
// 取得字符串字节长度
public static int GetByteLength(string asSource, string asCharset)
{
if (asSource == null || asSource.Length == 0)
{
return 0;
}
Encoding oEncoding;
if (asCharset.Length != 0)
{
oEncoding = Encoding.GetEncoding(asCharset);
}
else
{
oEncoding = Encoding.Default;
}
return oEncoding.GetByteCount(asSource);
}