using System.Reflection;
using System.Runtime.Loader;
namespace Emby.Server.Implementations.Plugins;
/// 
/// A custom  for loading Jellyfin plugins.
/// 
public class PluginLoadContext : AssemblyLoadContext
{
    private readonly AssemblyDependencyResolver _resolver;
    /// 
    /// Initializes a new instance of the  class.
    /// 
    /// The path of the plugin assembly.
    public PluginLoadContext(string path) : base(true)
    {
        _resolver = new AssemblyDependencyResolver(path);
    }
    /// 
    protected override Assembly? Load(AssemblyName assemblyName)
    {
        var assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
        if (assemblyPath is not null)
        {
            return LoadFromAssemblyPath(assemblyPath);
        }
        return null;
    }
}