Radarr/src/NzbDrone.SignalR/SignalrDependencyResolver.cs

45 lines
1.5 KiB
C#
Raw Normal View History

2018-11-23 07:03:32 +00:00
using System;
2013-05-05 21:24:33 +00:00
using Microsoft.AspNet.SignalR;
2016-12-09 02:37:46 +00:00
using Microsoft.AspNet.SignalR.Infrastructure;
2013-05-10 23:53:50 +00:00
using NzbDrone.Common.Composition;
2013-05-05 21:24:33 +00:00
2013-09-11 06:33:47 +00:00
namespace NzbDrone.SignalR
2013-05-05 21:24:33 +00:00
{
public class SignalRDependencyResolver : DefaultDependencyResolver
2013-05-05 21:24:33 +00:00
{
2013-05-10 23:53:50 +00:00
private readonly IContainer _container;
2013-05-05 21:24:33 +00:00
2013-05-10 23:53:50 +00:00
public static void Register(IContainer container)
2013-05-05 21:24:33 +00:00
{
GlobalHost.DependencyResolver = new SignalRDependencyResolver(container);
2013-05-05 21:24:33 +00:00
}
private SignalRDependencyResolver(IContainer container)
2013-05-05 21:24:33 +00:00
{
_container = container;
2019-06-30 04:58:54 +00:00
var performanceCounterManager = new RadarrPerformanceCounterManager();
2016-12-09 02:37:46 +00:00
Register(typeof(IPerformanceCounterManager), () => performanceCounterManager);
2013-05-05 21:24:33 +00:00
}
public override object GetService(Type serviceType)
{
// Microsoft.AspNet.SignalR.Infrastructure.AckSubscriber is not registered in our internal contaiiner,
// but it still gets treated like it is (possibly due to being a concrete type).
var fullName = serviceType.FullName;
if (fullName == "Microsoft.AspNet.SignalR.Infrastructure.AckSubscriber" ||
fullName == "Newtonsoft.Json.JsonSerializer")
{
return base.GetService(serviceType);
}
2013-05-10 23:53:50 +00:00
if (_container.IsTypeRegistered(serviceType))
{
return _container.Resolve(serviceType);
}
2013-05-05 21:24:33 +00:00
2013-05-10 23:53:50 +00:00
return base.GetService(serviceType);
2013-05-05 21:24:33 +00:00
}
}
2018-11-23 07:03:32 +00:00
}