diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-22 19:24:50 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-22 19:24:50 -0500 |
| commit | a2d215b6ae9d594d71a679a464c9c6a559efe862 (patch) | |
| tree | 06cb67ae79ff8e7420942edf761c23f4f7c09430 /MediaBrowser.Controller | |
| parent | 107c241598f0181102c53e2e1b215d335976028d (diff) | |
added simple injector for dependancy management
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Kernel.cs | 46 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs (renamed from MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs) | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/packages.config | 1 |
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 |
