Использование простого инжектора с SignalR
Я думал, что использовать мой собственный IoC было бы довольно просто с SignalR, и, возможно, так оно и есть; скорее всего я что то не так делаю. Вот мой код, который у меня есть:
private static void InitializeContainer(Container container)
{
container.Register<IMongoHelper<UserDocument>, MongoHelper<UserDocument>>();
// ... registrations like about and then:
var resolver = new SimpleInjectorResolver(container);
GlobalHost.DependencyResolver = resolver;
}
а потом мой класс:
public class SimpleInjectorResolver : DefaultDependencyResolver
{
private Container _container;
public SimpleInjectorResolver(Container container)
{
_container = container;
}
public override object GetService(Type serviceType)
{
return _container.GetInstance(serviceType) ?? base.GetService(serviceType);
}
public override IEnumerable<object> GetServices(Type serviceType)
{
return _container.GetAllInstances(serviceType) ?? base.GetServices(serviceType);
}
}
Что в итоге происходит, если я получаю ошибку, что IJavaScriptProxyGenerator не может быть решен, поэтому я думаю, что ж, я добавлю регистрацию:
container.Register<IJavaScriptProxyGenerator, DefaultJavaScriptProxyGenerator>(
ConstructorSelector.MostParameters);
но тогда есть куча других! Я добираюсь до:
container.Register<IDependencyResolver, SimpleInjectorResolver>();
container.Register<IJavaScriptMinifier, NullJavaScriptMinifier>();
container.Register<IJavaScriptProxyGenerator, DefaultJavaScriptProxyGenerator>(
ConstructorSelector.MostParameters);
container.Register<IHubManager, DefaultHubManager>();
container.Register<IHubActivator, DefaultHubActivator>();
container.Register<IParameterResolver, DefaultParameterResolver>();
container.Register<IMessageBus, InProcessMessageBus>(ConstructorSelector.MostParameters);
Который все еще дает мне "Нет регистрации для типаITraceManager
можно найти. "... но теперь мне интересно, правильно ли я все делаю, так как надеюсь, что мне не понадобится перепечатывать все, что делает SignalR ... правильно? Надеюсь? Если нет, то я Я буду продолжать блуждать, но я новичок в SignalR и Simple Injector, поэтому подумал, что сначала спрошу.
Дополнительно:https: //cuttingedge.it/blogs/steven/pivot/entry.php ID = 88 поскольку у SignalR было несколько конструкторов.