Je vyžadována podpora jazyka JavaScript
Některé stránky na tomto webu vyžadují podporu jazyka JavaScript. Váš webový prohlížeč jazyk JavaScript nepodporuje nebo jazyk JavaScript není povolen.
Chcete-li zjistit, zda webový prohlížeč podporuje jazyk JavaScript nebo jazyk JavaScript chcete povolit, přečtěte si nápovědu k vašemu webovému prohlížeči.
ExceptionExtensions.cs
Download fileToto je zdrojový kód souboru ExceptionExtensions.cs
Class that contains Exception extension methods.
using System;
namespace IMP.Shared
{
internal static class ExceptionExtensions
{
#region action methods
public static Exception SetAsyncStackTrace(this Exception ex, string asyncStackTrace)
{
if (ex == null)
{
throw new ArgumentNullException("ex");
}
ex.Data.Add("AsyncStackTrace", asyncStackTrace);
return ex;
}
public static string FormatExceptionInfo(this Exception ex)
{
if (ex == null)
{
throw new ArgumentNullException("ex");
}
var sb = new System.Text.StringBuilder();
sb.Append(ex.GetType().FullName);
if (!string.IsNullOrEmpty(ex.Message))
{
sb.Append(": ");
sb.Append(ex.Message);
}
var detail = TryGetExceptionDetail(ex);
if (detail != null)
{
sb.Append(Environment.NewLine);
sb.Append("---> ");
sb.Append(detail.FormatExceptionInfo());
sb.Append(Environment.NewLine);
sb.Append(" --- End of remote service exception stack trace ---");
}
if (ex.InnerException != null)
{
sb.Append(Environment.NewLine);
sb.Append("---> ");
sb.Append(ex.InnerException.FormatExceptionInfo());
sb.Append(Environment.NewLine);
sb.Append(" --- End of inner exception stack trace ---");
}
string stackTrace = (string)ex.Data["AsyncStackTrace"] ?? ex.StackTrace;
if (stackTrace != null)
{
sb.Append(Environment.NewLine);
sb.Append(stackTrace);
}
return sb.ToString();
}
public static string FormatExceptionInfo(this System.ServiceModel.ExceptionDetail detail)
{
var sb = new System.Text.StringBuilder();
sb.Append(detail.Type);
if (!string.IsNullOrEmpty(detail.Message))
{
sb.Append(": ");
sb.Append(detail.Message);
}
if (detail.InnerException != null)
{
sb.Append(Environment.NewLine);
sb.Append("---> ");
sb.Append(detail.InnerException.FormatExceptionInfo());
sb.Append(Environment.NewLine);
sb.Append(" --- End of inner exception stack trace ---");
}
if (detail.StackTrace != null)
{
sb.Append(Environment.NewLine);
sb.Append(detail.StackTrace);
}
return sb.ToString();
}
#endregion
#region private member functions
private static System.ServiceModel.ExceptionDetail TryGetExceptionDetail(Exception ex)
{
if (!(ex is System.ServiceModel.FaultException))
{
return null;
}
Type exceptionType = ex.GetType();
while (exceptionType != null)
{
if (exceptionType.IsGenericType && exceptionType.GetGenericTypeDefinition() == typeof(System.ServiceModel.FaultException<>))
{
var property = exceptionType.GetProperty("Detail");
return property.GetValue(ex, null) as System.ServiceModel.ExceptionDetail;
}
exceptionType = exceptionType.BaseType;
}
return null;
}
#endregion
}
}