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
loader
MonkeyLoaderpoolName
stringgetPatchedAssemblyPath
Func<string>Provides the path where to save patched assemblies. Return
null
to disable.loadForResolve
boolWhether 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
pool
AssemblyPool
Returns
AddSearchDirectory(string)
public void AddSearchDirectory(string directory)
Parameters
directory
string
Dispose()
public void Dispose()
GetAllAsLoadedPackages(string)
public IEnumerable<ILoadedNuGetPackage> GetAllAsLoadedPackages(string optionalPrefix)
Parameters
optionalPrefix
string
Returns
GetAssembly(AssemblyName)
Gets the Assembly for an entry without attempting to load it.
public Assembly GetAssembly(AssemblyName name)
Parameters
name
AssemblyNameThe name of the Assembly to get.
Returns
Exceptions
- InvalidOperationException
When the assembly hasn't been loaded yet.
- KeyNotFoundException
When the
name
doesn't exist in this pool.
LoadAll(string)
Loads all (not yet loaded) Assembly entries.
public void LoadAll(string path)
Parameters
path
string
LoadAssembly(AssemblyName)
Gets the Assembly for an entry loading it if necessary.
public Assembly LoadAssembly(AssemblyName name)
Parameters
name
AssemblyNameThe name of the Assembly to get.
Returns
Exceptions
- KeyNotFoundException
When the
name
doesn't exist in this pool.
LoadDefinition(Stream, ReaderParameters?)
public AssemblyDefinition LoadDefinition(Stream assemblyStream, ReaderParameters? readerParameters = null)
Parameters
assemblyStream
StreamreaderParameters
ReaderParameters
Returns
LoadDefinition(string, ReaderParameters?)
public AssemblyDefinition LoadDefinition(string path, ReaderParameters? readerParameters = null)
Parameters
path
stringreaderParameters
ReaderParameters
Returns
Resolve(AssemblyNameReference)
public AssemblyDefinition Resolve(AssemblyNameReference name)
Parameters
Returns
Resolve(AssemblyNameReference, ReaderParameters)
public AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters)
Parameters
name
AssemblyNameReferenceparameters
ReaderParameters
Returns
RestoreDefinition(AssemblyName)
Restores the AssemblyDefinition for an entry and releases its definition lock.
public void RestoreDefinition(AssemblyName name)
Parameters
name
AssemblyNameThe entry to restore.
Exceptions
- InvalidOperationException
When the entry has already been loaded or returned.
- KeyNotFoundException
When the
name
doesn'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
name
AssemblyNameThe entry to set.
assemblyDefinition
AssemblyDefinitionThe (new) AssemblyDefinition.
Exceptions
- InvalidOperationException
When the entry has already been loaded or returned.
- KeyNotFoundException
When the
name
doesn't exist in this pool.
TryResolve(AssemblyName, out AssemblyDefinition?)
public bool TryResolve(AssemblyName name, out AssemblyDefinition? assemblyDefinition)
Parameters
name
AssemblyNameassemblyDefinition
AssemblyDefinition
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
name
AssemblyNameThe entry to get.
result
AssemblyDefinitionThe entry's AssemblyDefinition or
null
if 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
name
AssemblyNameThe entry to get.
Returns
- AssemblyDefinition
The entry's AssemblyDefinition.
Exceptions
- InvalidOperationException
When the entry has already been loaded.
- KeyNotFoundException
When the
name
doesn't exist in this pool.