42 lines
1.4 KiB
C#
Raw Normal View History

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);
}
}
}
}
}