Implemented plugin assembly lookup api.

This commit is contained in:
MapleWheels
2026-03-21 04:27:02 -04:00
parent 26ac37ed46
commit 3dd9cfa741

View File

@@ -833,6 +833,36 @@ public class PluginManagementService : IAssemblyManagementService
public Result<Assembly> GetLoadedAssembly(OneOf<AssemblyName, string> assemblyName, in Guid[] excludedContexts)
{
throw new NotImplementedException();
using var _ = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
IService.CheckDisposed(this);
var guids = excludedContexts;
return assemblyName.Match<Assembly>((AssemblyName asm) =>
{
foreach (var ass in _assemblyLoaders.Values
.Where(al => guids.Length == 0 || !guids.Contains(al.Id))
.SelectMany(al => al.Assemblies)
.ToImmutableArray())
{
if (ass.GetName() == asm)
{
return ass;
}
}
return null;
},
(string asmName) =>
{
foreach (var ass in _assemblyLoaders.Values.SelectMany(al => al.Assemblies))
{
if (ass.GetName().Name?.Equals(asmName) ?? ass.GetName().FullName.Equals(asmName))
{
return ass;
}
}
return null;
});
}
}