using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace Rocky
{
/// <summary>
/// Release下会忽略此类所有方法
/// </summary>
[DebuggerStepThrough]
public static class Validator
{
#region Fields
public const string DebugSymbal = "DEBUG";
#endregion
#region Methods
[Conditional(Validator.DebugSymbal)]
public static void ThrowArgumentNullException(object arg, string paramName = null)
{
if (arg == null)
{
if (paramName == null)
{
paramName = string.Empty;
}
Debug.Assert(false, paramName);
throw new ArgumentNullException(paramName);
}
}
[Conditional(Validator.DebugSymbal)]
public static void ThrowArgumentException(bool isIllegal, string paramName = null)
{
if (isIllegal)
{
if (paramName == null)
{
paramName = string.Empty;
}
Debug.Assert(false, paramName);
throw new ArgumentException(string.Empty, paramName);
}
}
[Conditional(Validator.DebugSymbal)]
public static void ThrowInvalidOperationException(bool isIllegal, string message = null)
{
if (isIllegal)
{
if (message == null)
{
message = string.Empty;
}
Debug.Assert(false, message);
throw new InvalidOperationException(message);
}
}
[Conditional(Validator.DebugSymbal)]
public static void ThrowNotSupportedException(bool isIllegal, string message = null)
{
if (isIllegal)
{
if (message == null)
{
message = string.Empty;
}
Debug.Assert(false, message);
throw new NotSupportedException(message);
}
}
[Conditional(Validator.DebugSymbal)]
public static void ThrowException<T>(bool isIllegal, string environmentState) where T : Exception
{
if (isIllegal)
{
Debug.Assert(false, environmentState);
try
{
throw (T)Activator.CreateInstance(typeof(T), environmentState);
}
catch
{
throw new InvalidOperationException(environmentState);
}
}
}
#endregion
}
}