42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
|
using ANX.Framework.NonXNA;
|
|||
|
using ANX.Framework.NonXNA.Development;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Reflection;
|
|||
|
using System.Text;
|
|||
|
|
|||
|
namespace ANX.Framework.Content.Pipeline.Helpers
|
|||
|
{
|
|||
|
public static class ClassPreloader
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Preloads all classes of the currently loaded assemblies that have the <see cref="PreloadAttribute"/>.
|
|||
|
/// </summary>
|
|||
|
public static void Preload()
|
|||
|
{
|
|||
|
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
|
|||
|
{
|
|||
|
Preload(assembly);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Preloads all classes of the given <paramref name="assembly"/> that have the <see cref="PreloadAttribute"/>.
|
|||
|
/// </summary>
|
|||
|
/// <param name="assembly"></param>
|
|||
|
public static void Preload(Assembly assembly)
|
|||
|
{
|
|||
|
foreach (Type type in assembly.GetTypes())
|
|||
|
{
|
|||
|
//The versions of anx might not always be the same, that's why we're checking for the typename and not the type itself.
|
|||
|
//if (type.GetCustomAttributes(true).Any((x) => x.GetType().Name == "PreloadAttribute"))
|
|||
|
if (type.GetCustomAttributes(typeof(PreloadAttribute), true).Any())
|
|||
|
{
|
|||
|
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|