elliebot/src/Ellie/Marmalade/MarmaladeAssemblyLoadContext.cs
Emotion e8fc5e7b93
Added Ellie.Marmalade into the main project
Signed-off-by: Emotion <emotion@emotionchild.com>
2023-08-24 01:10:42 +12:00

35 lines
No EOL
944 B
C#

using System.Reflection;
using System.Runtime.Loader;
namespace Ellie.Marmalade;
public class MarmaladeAssemblyLoadContext : AssemblyLoadContext
{
private readonly AssemblyDependencyResolver _resolver;
public MarmaladeAssemblyLoadContext(string folderPath) : base(isCollectible: true)
=> _resolver = new(folderPath);
// public Assembly MainAssembly { get; private set; }
protected override Assembly? Load(AssemblyName assemblyName)
{
var assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
if (assemblyPath != null)
{
var assembly = LoadFromAssemblyPath(assemblyPath);
LoadDependencies(assembly);
return assembly;
}
return null;
}
public void LoadDependencies(Assembly assembly)
{
foreach (var reference in assembly.GetReferencedAssemblies())
{
Load(reference);
}
}
}