You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/NzbDrone.SignalR/SignalRDependencyResolver.cs

47 lines
1.5 KiB

using System;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Infrastructure;
using NzbDrone.Common.Composition;
namespace NzbDrone.SignalR
{
public class SignalRDependencyResolver : DefaultDependencyResolver
{
private readonly IContainer _container;
public static void Register(IContainer container)
{
GlobalHost.DependencyResolver = new SignalRDependencyResolver(container);
}
private SignalRDependencyResolver(IContainer container)
{
_container = container;
var performanceCounterManager = new LidarrPerformanceCounterManager();
Register(typeof(IPerformanceCounterManager), () => performanceCounterManager);
}
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);
}
if (_container.IsTypeRegistered(serviceType))
{
return _container.Resolve(serviceType);
}
return base.GetService(serviceType);
}
}
}