mirror of
https://github.com/AssetRipper/AssetRipper.git
synced 2025-12-11 20:15:29 +01:00
29 lines
879 B
C#
29 lines
879 B
C#
using System.Reflection;
|
|
|
|
namespace AssetRipper.SerializationLogic.Tests;
|
|
|
|
public static class ReferenceAssemblies
|
|
{
|
|
public static ModuleDefinition GetModule<T>() => GetModule(typeof(T));
|
|
public static ModuleDefinition GetModule(Type type) => GetModule(type.Assembly);
|
|
public static ModuleDefinition GetModule(Assembly assembly)
|
|
{
|
|
if (!modules.TryGetValue(assembly, out ModuleDefinition? module))
|
|
{
|
|
module = ModuleDefinition.FromFile(assembly.Location);
|
|
modules.Add(assembly, module);
|
|
}
|
|
return module;
|
|
}
|
|
|
|
public static TypeDefinition GetType<T>() => GetType(typeof(T));
|
|
public static TypeDefinition GetType(Type type)
|
|
{
|
|
ModuleDefinition module = GetModule(type);
|
|
string? fullName = type.FullName;
|
|
return module.GetAllTypes().First(t => t.FullName == fullName);
|
|
}
|
|
|
|
private static readonly Dictionary<Assembly, ModuleDefinition> modules = new();
|
|
}
|