RunUO/Scripts/Misc/ValidationQueue.cs

57 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Reflection;
using Server;
namespace Server
{
public delegate void ValidationEventHandler();
public static class ValidationQueue
{
public static event ValidationEventHandler StartValidation;
public static void Initialize()
{
if ( StartValidation != null )
StartValidation();
StartValidation = null;
}
}
public static class ValidationQueue<T>
{
private static List<T> m_Queue;
static ValidationQueue()
{
m_Queue = new List<T>();
ValidationQueue.StartValidation += new ValidationEventHandler( ValidateAll );
}
public static void Add( T obj )
{
m_Queue.Add( obj );
}
private static void ValidateAll()
{
Type type = typeof( T );
if ( type != null )
{
MethodInfo m = type.GetMethod( "Validate", BindingFlags.Instance | BindingFlags.Public );
if ( m != null )
{
for ( int i = 0; i < m_Queue.Count; ++i )
m.Invoke( m_Queue[i], null );
}
}
m_Queue.Clear();
m_Queue = null;
}
}
}