aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common.Implementations/BaseApplicationHost.cs')
-rw-r--r--MediaBrowser.Common.Implementations/BaseApplicationHost.cs31
1 files changed, 27 insertions, 4 deletions
diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
index fe0abcae0..4c2d5d599 100644
--- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
+++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
@@ -159,7 +159,7 @@ namespace MediaBrowser.Common.Implementations
protected IZipClient ZipClient { get; set; }
protected IIsoManager IsoManager { get; set; }
-
+
/// <summary>
/// Initializes a new instance of the <see cref="BaseApplicationHost{TApplicationPathsType}"/> class.
/// </summary>
@@ -243,7 +243,7 @@ namespace MediaBrowser.Common.Implementations
/// Runs the startup tasks.
/// </summary>
/// <returns>Task.</returns>
- public virtual Task RunStartupTasks()
+ public virtual Task RunStartupTasks()
{
return Task.Run(() =>
{
@@ -384,7 +384,7 @@ namespace MediaBrowser.Common.Implementations
/// </summary>
/// <param name="type">The type.</param>
/// <returns>System.Object.</returns>
- public object CreateInstance(Type type)
+ protected object CreateInstance(Type type)
{
try
{
@@ -399,6 +399,25 @@ namespace MediaBrowser.Common.Implementations
}
/// <summary>
+ /// Creates the instance safe.
+ /// </summary>
+ /// <param name="type">The type.</param>
+ /// <returns>System.Object.</returns>
+ protected object CreateInstanceSafe(Type type)
+ {
+ try
+ {
+ return Container.GetInstance(type);
+ }
+ catch (Exception ex)
+ {
+ Logger.Error("Error creating {0}", ex, type.Name);
+
+ return null;
+ }
+ }
+
+ /// <summary>
/// Registers the specified obj.
/// </summary>
/// <typeparam name="T"></typeparam>
@@ -496,7 +515,11 @@ namespace MediaBrowser.Common.Implementations
/// <returns>IEnumerable{``0}.</returns>
public IEnumerable<T> GetExports<T>(bool manageLiftime = true)
{
- var parts = GetExportTypes<T>().Select(CreateInstance).Cast<T>().ToList();
+ var parts = GetExportTypes<T>()
+ .Select(CreateInstanceSafe)
+ .Where(i => i != null)
+ .Cast<T>()
+ .ToList();
if (manageLiftime)
{