11using System ;
22using System . Collections ;
33using System . Collections . Generic ;
4+ using System . Collections . ObjectModel ;
45using System . IO ;
56using System . IO . Compression ;
67using System . Linq ;
@@ -25,13 +26,14 @@ public class PluginManager : Manager, IPluginManager
2526 private static Logger _log = LogManager . GetLogger ( nameof ( PluginManager ) ) ;
2627 private const string MANIFEST_NAME = "manifest.xml" ;
2728 public readonly string PluginDir = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "Plugins" ) ;
29+ private readonly ObservableDictionary < Guid , ITorchPlugin > _plugins = new ObservableDictionary < Guid , ITorchPlugin > ( ) ;
2830 [ Dependency ]
2931 private CommandManager _commandManager ;
3032
3133 /// <inheritdoc />
32- public IDictionary < Guid , ITorchPlugin > Plugins { get ; } = new ObservableDictionary < Guid , ITorchPlugin > ( ) ;
34+ public IReadOnlyDictionary < Guid , ITorchPlugin > Plugins => _plugins . AsReadOnly ( ) ;
3335
34- public event Action < ICollection < ITorchPlugin > > PluginsLoaded ;
36+ public event Action < IReadOnlyCollection < ITorchPlugin > > PluginsLoaded ;
3537
3638 public PluginManager ( ITorchBase torchInstance ) : base ( torchInstance )
3739 {
@@ -44,7 +46,7 @@ public PluginManager(ITorchBase torchInstance) : base(torchInstance)
4446 /// </summary>
4547 public void UpdatePlugins ( )
4648 {
47- foreach ( var plugin in Plugins . Values )
49+ foreach ( var plugin in _plugins . Values )
4850 plugin . Update ( ) ;
4951 }
5052
@@ -53,10 +55,10 @@ public void UpdatePlugins()
5355 /// </summary>
5456 public override void Detach ( )
5557 {
56- foreach ( var plugin in Plugins . Values )
58+ foreach ( var plugin in _plugins . Values )
5759 plugin . Dispose ( ) ;
5860
59- Plugins . Clear ( ) ;
61+ _plugins . Clear ( ) ;
6062 }
6163
6264 public void LoadPlugins ( )
@@ -75,9 +77,9 @@ public void LoadPlugins()
7577 continue ;
7678 }
7779
78- if ( Plugins . ContainsKey ( manifest . Guid ) )
80+ if ( _plugins . ContainsKey ( manifest . Guid ) )
7981 {
80- _log . Error ( $ "The GUID provided by { manifest . Name } ({ item } ) is already in use by { Plugins [ manifest . Guid ] . Name } ") ;
82+ _log . Error ( $ "The GUID provided by { manifest . Name } ({ item } ) is already in use by { _plugins [ manifest . Guid ] . Name } ") ;
8183 continue ;
8284 }
8385
@@ -87,9 +89,9 @@ public void LoadPlugins()
8789 LoadPluginFromFolder ( path ) ;
8890 }
8991
90- Plugins . ForEach ( x => x . Value . Init ( Torch ) ) ;
91- _log . Info ( $ "Loaded { Plugins . Count } plugins.") ;
92- PluginsLoaded ? . Invoke ( Plugins . Values ) ;
92+ _plugins . ForEach ( x => x . Value . Init ( Torch ) ) ;
93+ _log . Info ( $ "Loaded { _plugins . Count } plugins.") ;
94+ PluginsLoaded ? . Invoke ( _plugins . Values . AsReadOnly ( ) ) ;
9395 }
9496
9597 private void DownloadPluginUpdates ( )
@@ -307,14 +309,14 @@ private void InstantiatePlugin(PluginManifest manifest, IEnumerable<Assembly> as
307309 plugin . Manifest = manifest ;
308310 plugin . StoragePath = Torch . Config . InstancePath ;
309311 plugin . Torch = Torch ;
310- Plugins . Add ( manifest . Guid , plugin ) ;
312+ _plugins . Add ( manifest . Guid , plugin ) ;
311313 _commandManager . RegisterPluginCommands ( plugin ) ;
312314 }
313315
314316 /// <inheritdoc cref="IEnumerable.GetEnumerator"/>
315317 public IEnumerator < ITorchPlugin > GetEnumerator ( )
316318 {
317- return Plugins . Values . GetEnumerator ( ) ;
319+ return _plugins . Values . GetEnumerator ( ) ;
318320 }
319321
320322 IEnumerator IEnumerable . GetEnumerator ( )
0 commit comments