more dependancy injection. still just beginning

This commit is contained in:
LukePulverenti
2013-02-22 22:49:00 -05:00
parent 57cb08085d
commit c165f37bb9
13 changed files with 147 additions and 206 deletions

View File

@@ -1,9 +1,12 @@
using MediaBrowser.ClickOnce;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Kernel;
using MediaBrowser.Controller;
using MediaBrowser.IsoMounter;
using MediaBrowser.Logging.Nlog;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Updates;
using MediaBrowser.Server.Uninstall;
using MediaBrowser.ServerApplication.Implementations;
@@ -19,6 +22,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using SimpleInjector;
namespace MediaBrowser.ServerApplication
{
@@ -73,6 +77,11 @@ namespace MediaBrowser.ServerApplication
/// <value>The log file path.</value>
public string LogFilePath { get; private set; }
/// <summary>
/// The container
/// </summary>
private Container _container = new Container();
/// <summary>
/// Initializes a new instance of the <see cref="App" /> class.
/// </summary>
@@ -172,12 +181,26 @@ namespace MediaBrowser.ServerApplication
Shutdown();
}
/// <summary>
/// Registers resources that classes will depend on
/// </summary>
private void RegisterResources()
{
Register(this);
Register(Logger);
Register<IIsoManager>(new PismoIsoManager(Logger));
Register<IBlurayExaminer>(new BdInfoExaminer());
Register<IZipClient>(new DotNetZipClient());
}
/// <summary>
/// Loads the kernel.
/// </summary>
protected async void LoadKernel()
{
Kernel = new Kernel(this, new PismoIsoManager(Logger), new DotNetZipClient(), new BdInfoExaminer(), Logger);
RegisterResources();
Kernel = new Kernel(this, Logger);
try
{
@@ -378,7 +401,7 @@ namespace MediaBrowser.ServerApplication
NlogManager.AddFileTarget(LogFilePath, Kernel.Configuration.EnableDebugLevelLogging);
}
/// <summary>
/// Gets the image.
/// </summary>
@@ -485,5 +508,45 @@ namespace MediaBrowser.ServerApplication
{
return new ApplicationUpdater().UpdateApplication(cancellationToken, progress);
}
/// <summary>
/// Creates an instance of type and resolves all constructor dependancies
/// </summary>
/// <param name="type">The type.</param>
/// <returns>System.Object.</returns>
public object CreateInstance(Type type)
{
try
{
return _container.GetInstance(type);
}
catch
{
Logger.Error("Error creating {0}", type.Name);
throw;
}
}
/// <summary>
/// Registers the specified obj.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj">The obj.</param>
public void Register<T>(T obj)
where T : class
{
_container.RegisterSingle(obj);
}
/// <summary>
/// Resolves this instance.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns>``0.</returns>
public T Resolve<T>() where T : class
{
return (T)_container.GetRegistration(typeof (T), true).GetInstance();
}
}
}

View File

@@ -128,6 +128,10 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\ThirdParty\UPnP\Libs\Platinum.Managed.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.Configuration" />
<Reference Include="System.Data" />

View File

@@ -3,5 +3,6 @@
<package id="DotNetZip" version="1.9.1.8" targetFramework="net45" />
<package id="Hardcodet.Wpf.TaskbarNotification" version="1.0.4.0" targetFramework="net45" />
<package id="NLog" version="2.0.0.2000" targetFramework="net45" />
<package id="SimpleInjector" version="2.0.0-beta5" targetFramework="net45" />
<package id="System.Data.SQLite" version="1.0.84.0" targetFramework="net45" />
</packages>