pschelpdesk/Vendor/Prise/Caching/DefaultScopedPluginCache.cs
2024-11-04 20:45:34 +01:00

33 lines
998 B
C#

using System;
using System.Collections.Generic;
using System.Collections.Concurrent;
using System.Linq;
namespace Prise.Caching
{
public class DefaultScopedPluginCache : IPluginCache
{
protected ConcurrentBag<ICachedPluginAssembly> pluginCache;
public DefaultScopedPluginCache()
{
this.pluginCache = new ConcurrentBag<ICachedPluginAssembly>();
}
public void Add(IAssemblyShim pluginAssembly, IEnumerable<Type> hostTypes = null)
{
this.pluginCache.Add(new CachedPluginAssembly
{
AssemblyShim = pluginAssembly,
HostTypes = hostTypes
});
}
public void Remove(string assemblyName)
{
this.pluginCache = new ConcurrentBag<ICachedPluginAssembly>(this.pluginCache.Where(a => a.AssemblyShim.Assembly.GetName().Name != assemblyName));
}
public ICachedPluginAssembly[] GetAll() => this.pluginCache.ToArray();
}
}