aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-02-22 19:24:50 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-02-22 19:24:50 -0500
commita2d215b6ae9d594d71a679a464c9c6a559efe862 (patch)
tree06cb67ae79ff8e7420942edf761c23f4f7c09430 /MediaBrowser.Controller
parent107c241598f0181102c53e2e1b215d335976028d (diff)
added simple injector for dependancy management
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Kernel.cs46
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj6
-rw-r--r--MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs6
-rw-r--r--MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs (renamed from MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs)4
-rw-r--r--MediaBrowser.Controller/packages.config1
5 files changed, 46 insertions, 17 deletions
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index 952160b2b..ea868ec45 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/MediaBrowser.Controller/Kernel.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Localization;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
@@ -27,6 +28,7 @@ using System.ComponentModel.Composition.Hosting;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using SimpleInjector;
namespace MediaBrowser.Controller
{
@@ -179,24 +181,28 @@ namespace MediaBrowser.Controller
}
/// <summary>
+ /// Gets the list of Localized string files
+ /// </summary>
+ /// <value>The string files.</value>
+ [ImportMany(typeof(LocalizedStringData))]
+ public IEnumerable<LocalizedStringData> StringFiles { get; private set; }
+
+ /// <summary>
/// Gets the list of plugin configuration pages
/// </summary>
/// <value>The configuration pages.</value>
- [ImportMany(typeof(IPluginConfigurationPage))]
public IEnumerable<IPluginConfigurationPage> PluginConfigurationPages { get; private set; }
/// <summary>
/// Gets the intro providers.
/// </summary>
/// <value>The intro providers.</value>
- [ImportMany(typeof(IIntroProvider))]
public IEnumerable<IIntroProvider> IntroProviders { get; private set; }
/// <summary>
/// Gets the list of currently registered weather prvoiders
/// </summary>
/// <value>The weather providers.</value>
- [ImportMany(typeof(IWeatherProvider))]
public IEnumerable<IWeatherProvider> WeatherProviders { get; private set; }
/// <summary>
@@ -232,7 +238,6 @@ namespace MediaBrowser.Controller
/// Gets the list of available user repositories
/// </summary>
/// <value>The user repositories.</value>
- [ImportMany(typeof(IUserRepository))]
private IEnumerable<IUserRepository> UserRepositories { get; set; }
/// <summary>
@@ -251,7 +256,6 @@ namespace MediaBrowser.Controller
/// Gets the list of available item repositories
/// </summary>
/// <value>The item repositories.</value>
- [ImportMany(typeof(IItemRepository))]
private IEnumerable<IItemRepository> ItemRepositories { get; set; }
/// <summary>
@@ -264,22 +268,19 @@ namespace MediaBrowser.Controller
/// Gets the list of available item repositories
/// </summary>
/// <value>The user data repositories.</value>
- [ImportMany(typeof(IUserDataRepository))]
private IEnumerable<IUserDataRepository> UserDataRepositories { get; set; }
/// <summary>
/// Gets the list of available DisplayPreferencesRepositories
/// </summary>
/// <value>The display preferences repositories.</value>
- [ImportMany(typeof(IDisplayPreferencesRepository))]
private IEnumerable<IDisplayPreferencesRepository> DisplayPreferencesRepositories { get; set; }
/// <summary>
/// Gets the list of entity resolution ignore rules
/// </summary>
/// <value>The entity resolution ignore rules.</value>
- [ImportMany(typeof(BaseResolutionIgnoreRule))]
- internal IEnumerable<BaseResolutionIgnoreRule> EntityResolutionIgnoreRules { get; private set; }
+ internal IEnumerable<IResolutionIgnoreRule> EntityResolutionIgnoreRules { get; private set; }
/// <summary>
/// Gets the active user data repository
@@ -357,12 +358,35 @@ namespace MediaBrowser.Controller
/// Composes the exported values.
/// </summary>
/// <param name="container">The container.</param>
- protected override void ComposeExportedValues(CompositionContainer container)
+ /// <param name="iocContainer">The _ioc container.</param>
+ protected override void ComposeExportedValues(CompositionContainer container, Container iocContainer)
{
- base.ComposeExportedValues(container);
+ base.ComposeExportedValues(container, iocContainer);
container.ComposeExportedValue("kernel", this);
container.ComposeExportedValue("blurayExaminer", BlurayExaminer);
+
+ iocContainer.RegisterSingle(this);
+ iocContainer.RegisterSingle(BlurayExaminer);
+ }
+
+ /// <summary>
+ /// Composes the parts with ioc container.
+ /// </summary>
+ /// <param name="allTypes">All types.</param>
+ /// <param name="container">The container.</param>
+ protected override void ComposePartsWithIocContainer(Type[] allTypes, Container container)
+ {
+ base.ComposePartsWithIocContainer(allTypes, container);
+
+ EntityResolutionIgnoreRules = GetExports<IResolutionIgnoreRule>(allTypes);
+ UserDataRepositories = GetExports<IUserDataRepository>(allTypes);
+ UserRepositories = GetExports<IUserRepository>(allTypes);
+ DisplayPreferencesRepositories = GetExports<IDisplayPreferencesRepository>(allTypes);
+ ItemRepositories = GetExports<IItemRepository>(allTypes);
+ WeatherProviders = GetExports<IWeatherProvider>(allTypes);
+ IntroProviders = GetExports<IIntroProvider>(allTypes);
+ PluginConfigurationPages = GetExports<IPluginConfigurationPage>(allTypes);
}
/// <summary>
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 3978e6e39..f962427cd 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -63,6 +63,10 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll</HintPath>
</Reference>
+ <Reference Include="SimpleInjector, Version=2.0.0.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\packages\SimpleInjector.2.0.0-beta5\lib\net40-client\SimpleInjector.dll</HintPath>
+ </Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
@@ -165,7 +169,7 @@
<Compile Include="Providers\MediaInfo\FFMpegVideoImageProvider.cs" />
<Compile Include="Resolvers\Audio\MusicAlbumResolver.cs" />
<Compile Include="Resolvers\Audio\MusicArtistResolver.cs" />
- <Compile Include="Resolvers\BaseResolutionIgnoreRule.cs" />
+ <Compile Include="Resolvers\IResolutionIgnoreRule.cs" />
<Compile Include="Resolvers\CoreResolutionIgnoreRule.cs" />
<Compile Include="Resolvers\EntityResolutionHelper.cs" />
<Compile Include="Resolvers\LocalTrailerResolver.cs" />
diff --git a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
index 2d69f8def..d237f68f3 100644
--- a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
+++ b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
@@ -9,8 +9,8 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Provides the core resolver ignore rules
/// </summary>
- [Export(typeof(BaseResolutionIgnoreRule))]
- public class CoreResolutionIgnoreRule : BaseResolutionIgnoreRule
+ [Export(typeof(IResolutionIgnoreRule))]
+ public class CoreResolutionIgnoreRule : IResolutionIgnoreRule
{
/// <summary>
/// Any folder named in this list will be ignored - can be added to at runtime for extensibility
@@ -27,7 +27,7 @@ namespace MediaBrowser.Controller.Resolvers
"extrafanart"
};
- public override bool ShouldIgnore(ItemResolveArgs args)
+ public bool ShouldIgnore(ItemResolveArgs args)
{
// Ignore hidden files and folders
if (args.IsHidden)
diff --git a/MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs
index 45effc4da..661688f3c 100644
--- a/MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs
+++ b/MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs
@@ -5,8 +5,8 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Provides a base "rule" that anyone can use to have paths ignored by the resolver
/// </summary>
- public abstract class BaseResolutionIgnoreRule
+ public interface IResolutionIgnoreRule
{
- public abstract bool ShouldIgnore(ItemResolveArgs args);
+ bool ShouldIgnore(ItemResolveArgs args);
}
}
diff --git a/MediaBrowser.Controller/packages.config b/MediaBrowser.Controller/packages.config
index e3e4367b7..6fd19eed9 100644
--- a/MediaBrowser.Controller/packages.config
+++ b/MediaBrowser.Controller/packages.config
@@ -2,4 +2,5 @@
<packages>
<package id="morelinq" version="1.0.15631-beta" targetFramework="net45" />
<package id="protobuf-net" version="2.0.0.621" targetFramework="net45" />
+ <package id="SimpleInjector" version="2.0.0-beta5" targetFramework="net45" />
</packages> \ No newline at end of file