diff --git a/src/Caliburn.Micro.Platform/AssemblySource.cs b/src/Caliburn.Micro.Platform/AssemblySource.cs index 17021b7fe..3f67bd1cb 100644 --- a/src/Caliburn.Micro.Platform/AssemblySource.cs +++ b/src/Caliburn.Micro.Platform/AssemblySource.cs @@ -17,6 +17,27 @@ public static class AssemblySource /// public static readonly IObservableCollection Instance = new BindableCollection(); + + /// + /// Adds a collection of assemblies to AssemblySource + /// + /// The assemblies to add + public static void AddRange(IEnumerable assemblies) + { + foreach(var assembly in assemblies) + { + try + { + if (!Instance.Contains(assembly)) + Instance.Add(assembly); + } + catch (ArgumentException) + { + // ignore + } + } + } + /// /// Finds a type which matches one of the elements in the sequence of names. /// diff --git a/src/Caliburn.Micro.Platform/Platforms/Android/CaliburnApplication.cs b/src/Caliburn.Micro.Platform/Platforms/Android/CaliburnApplication.cs index 3b80222ea..371de01a7 100644 --- a/src/Caliburn.Micro.Platform/Platforms/Android/CaliburnApplication.cs +++ b/src/Caliburn.Micro.Platform/Platforms/Android/CaliburnApplication.cs @@ -30,7 +30,7 @@ public CaliburnApplication(IntPtr javaReference, JniHandleOwnership transfer) protected virtual void StartDesignTime() { AssemblySource.Instance.Clear(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); Configure(); @@ -45,7 +45,7 @@ protected virtual void StartDesignTime() protected virtual void StartRuntime() { AssemblySourceCache.Install(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); Configure(); diff --git a/src/Caliburn.Micro.Platform/Platforms/iOS/CaliburnApplicationDelegate.cs b/src/Caliburn.Micro.Platform/Platforms/iOS/CaliburnApplicationDelegate.cs index 412b60dda..64a5ad6cd 100644 --- a/src/Caliburn.Micro.Platform/Platforms/iOS/CaliburnApplicationDelegate.cs +++ b/src/Caliburn.Micro.Platform/Platforms/iOS/CaliburnApplicationDelegate.cs @@ -43,7 +43,7 @@ public CaliburnApplicationDelegate(NSObjectFlag t) protected virtual void StartDesignTime() { AssemblySource.Instance.Clear(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); Configure(); @@ -58,7 +58,7 @@ protected virtual void StartDesignTime() protected virtual void StartRuntime() { AssemblySourceCache.Install(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); Configure(); IoC.GetInstance = GetInstance; diff --git a/src/Caliburn.Micro.Platform/Platforms/net46-netcore/Bootstrapper.cs b/src/Caliburn.Micro.Platform/Platforms/net46-netcore/Bootstrapper.cs index e53b444f5..820d18e4e 100644 --- a/src/Caliburn.Micro.Platform/Platforms/net46-netcore/Bootstrapper.cs +++ b/src/Caliburn.Micro.Platform/Platforms/net46-netcore/Bootstrapper.cs @@ -83,7 +83,7 @@ public void Initialize() protected virtual void StartDesignTime() { AssemblySource.Instance.Clear(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); Configure(); IoC.GetInstance = GetInstance; @@ -97,7 +97,7 @@ protected virtual void StartDesignTime() protected virtual void StartRuntime() { AssemblySourceCache.Install(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); if (useApplication) { diff --git a/src/Caliburn.Micro.Platform/Platforms/net46/Bootstrapper.cs b/src/Caliburn.Micro.Platform/Platforms/net46/Bootstrapper.cs index e53b444f5..820d18e4e 100644 --- a/src/Caliburn.Micro.Platform/Platforms/net46/Bootstrapper.cs +++ b/src/Caliburn.Micro.Platform/Platforms/net46/Bootstrapper.cs @@ -83,7 +83,7 @@ public void Initialize() protected virtual void StartDesignTime() { AssemblySource.Instance.Clear(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); Configure(); IoC.GetInstance = GetInstance; @@ -97,7 +97,7 @@ protected virtual void StartDesignTime() protected virtual void StartRuntime() { AssemblySourceCache.Install(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); if (useApplication) { diff --git a/src/Caliburn.Micro.Platform/Platforms/uap/CaliburnApplication.cs b/src/Caliburn.Micro.Platform/Platforms/uap/CaliburnApplication.cs index 2f9848142..34d0432b1 100644 --- a/src/Caliburn.Micro.Platform/Platforms/uap/CaliburnApplication.cs +++ b/src/Caliburn.Micro.Platform/Platforms/uap/CaliburnApplication.cs @@ -28,7 +28,7 @@ public abstract class CaliburnApplication : Application protected virtual void StartDesignTime() { AssemblySource.Instance.Clear(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); Configure(); IoC.GetInstance = GetInstance; @@ -42,7 +42,7 @@ protected virtual void StartDesignTime() protected virtual void StartRuntime() { AssemblySourceCache.Install(); - AssemblySource.Instance.AddRange(SelectAssemblies()); + AssemblySource.AddRange(SelectAssemblies()); PrepareApplication(); Configure();