using System;
using System.Reflection;
namespace Prise.AssemblyLoading
{
public interface IAssemblyLoadStrategy
{
///
/// Loads a dependency assembly for the current plugin
///
/// Directory where the plugin was initially loaded from
///
///
///
///
///
/// A loaded assembly
AssemblyFromStrategy LoadAssembly(
string initialPluginLoadDirectory,
AssemblyName assemblyName,
IPluginDependencyContext pluginDependencyContext,
Func> loadFromDependencyContext,
Func> loadFromRemote,
Func> loadFromAppDomain);
///
/// Loads a native assembly
///
/// Directory where the plugin was initially loaded from
///
///
///
///
///
/// The path to a native assembly
NativeAssembly LoadUnmanagedDll(
string initialPluginLoadDirectory,
string unmanagedDllName,
IPluginDependencyContext pluginDependencyContext,
Func> loadFromDependencyContext,
Func> loadFromRemote,
Func> loadFromAppDomain);
}
}