Class AssemblyPool
- Namespace
- MonkeyLoader
- Assembly
- MonkeyLoader.dll
Manages a collection of Assemblies and
not yet loaded AssemblyDefinitions.
Handles AssemblyResolve events targeting its managed assemblies.
public sealed class AssemblyPool : IAssemblyResolver, IDisposable
- Inheritance
-
AssemblyPool
- Implements
- Inherited Members
Constructors
AssemblyPool(MonkeyLoader, string, Func<string?>?, bool)
Creates a new AssemblyPool instance, loading assemblies when asked to resolve them if desired.
public AssemblyPool(MonkeyLoader loader, string poolName = "AssemblyPool", Func<string?>? getPatchedAssemblyPath = null, bool loadForResolve = true)
Parameters
loaderMonkeyLoaderpoolNamestringgetPatchedAssemblyPathFunc<string>Provides the path where to save patched assemblies. Return
nullto disable.loadForResolveboolWhether to load assemblies when asked to resolve them.
Properties
LoadForResolve
Gets whether assemblies will be loaded when asked to resolve them.
public bool LoadForResolve { get; }
Property Value
Loader
public MonkeyLoader Loader { get; }
Property Value
PatchedAssemblyPath
public string? PatchedAssemblyPath { get; }
Property Value
Methods
AddFallbackPool(AssemblyPool)
public bool AddFallbackPool(AssemblyPool pool)
Parameters
poolAssemblyPool
Returns
AddSearchDirectory(string)
public void AddSearchDirectory(string directory)
Parameters
directorystring
Dispose()
public void Dispose()
GetAllAsLoadedPackages(string)
public IEnumerable<ILoadedNuGetPackage> GetAllAsLoadedPackages(string optionalPrefix)
Parameters
optionalPrefixstring
Returns
GetAssembly(AssemblyName)
Gets the Assembly for an entry without attempting to load it.
public Assembly GetAssembly(AssemblyName name)
Parameters
nameAssemblyNameThe name of the Assembly to get.
Returns
Exceptions
- InvalidOperationException
When the assembly hasn't been loaded yet.
- KeyNotFoundException
When the
namedoesn't exist in this pool.
LoadAll(string)
Loads all (not yet loaded) Assembly entries.
public void LoadAll(string path)
Parameters
pathstring
LoadAssembly(AssemblyName)
Gets the Assembly for an entry loading it if necessary.
public Assembly LoadAssembly(AssemblyName name)
Parameters
nameAssemblyNameThe name of the Assembly to get.
Returns
Exceptions
- KeyNotFoundException
When the
namedoesn't exist in this pool.
LoadDefinition(Stream, ReaderParameters?)
public AssemblyDefinition LoadDefinition(Stream assemblyStream, ReaderParameters? readerParameters = null)
Parameters
assemblyStreamStreamreaderParametersReaderParameters
Returns
LoadDefinition(string, ReaderParameters?)
public AssemblyDefinition LoadDefinition(string path, ReaderParameters? readerParameters = null)
Parameters
pathstringreaderParametersReaderParameters
Returns
Resolve(AssemblyNameReference)
public AssemblyDefinition Resolve(AssemblyNameReference name)
Parameters
Returns
Resolve(AssemblyNameReference, ReaderParameters)
public AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters)
Parameters
nameAssemblyNameReferenceparametersReaderParameters
Returns
RestoreDefinition(AssemblyName)
Restores the AssemblyDefinition for an entry and releases its definition lock.
public void RestoreDefinition(AssemblyName name)
Parameters
nameAssemblyNameThe entry to restore.
Exceptions
- InvalidOperationException
When the entry has already been loaded or returned.
- KeyNotFoundException
When the
namedoesn't exist in this pool.
ReturnDefinition(AssemblyName, AssemblyDefinition)
Sets the given (new) AssemblyDefinition for and entry and releases its definition lock.
public void ReturnDefinition(AssemblyName name, AssemblyDefinition assemblyDefinition)
Parameters
nameAssemblyNameThe entry to set.
assemblyDefinitionAssemblyDefinitionThe (new) AssemblyDefinition.
Exceptions
- InvalidOperationException
When the entry has already been loaded or returned.
- KeyNotFoundException
When the
namedoesn't exist in this pool.
TryResolve(AssemblyName, out AssemblyDefinition?)
public bool TryResolve(AssemblyName name, out AssemblyDefinition? assemblyDefinition)
Parameters
nameAssemblyNameassemblyDefinitionAssemblyDefinition
Returns
TryWaitForDefinition(AssemblyName, out AssemblyDefinition?)
Tries to wait until nothing else is modifying the AssemblyDefinition of an entry anymore, before making a snapshot and returning it. The definition has to be returned using RestoreDefinition(AssemblyName) or ReturnDefinition(AssemblyName, AssemblyDefinition) exactly once.
public bool TryWaitForDefinition(AssemblyName name, out AssemblyDefinition? result)
Parameters
nameAssemblyNameThe entry to get.
resultAssemblyDefinitionThe entry's AssemblyDefinition or
nullif it wasn't found or has already been loaded.
Returns
- bool
Whether the definition was returned.
WaitForDefinition(AssemblyName)
Waits until nothing else is modifying the AssemblyDefinition of an entry anymore, before making a snapshot and returning it. The definition has to be returned using RestoreDefinition(AssemblyName) or ReturnDefinition(AssemblyName, AssemblyDefinition) exactly once.
public AssemblyDefinition WaitForDefinition(AssemblyName name)
Parameters
nameAssemblyNameThe entry to get.
Returns
- AssemblyDefinition
The entry's AssemblyDefinition.
Exceptions
- InvalidOperationException
When the entry has already been loaded.
- KeyNotFoundException
When the
namedoesn't exist in this pool.