Я немного новичок в NancyFx и TinyIoc, но здесь идет:Как зарегистрировать зависимость для signalr концентратору TinyIocContainer в NancyFx
Я был в состоянии использовать автоматическую регистрацию TinyIocContainer в NanxyFx впрыснуть зависимостей в Нанси Модули, которые очень аккуратные, все прекрасно и работают.
Но, как вы регистрируете зависимость для концентратора signalr, как показано ниже?
Я постоянно получаю сообщение классическую ошибку из signalr:
No parameterless constructor defined for this object.
Моя установка:
У меня есть SignalR Hub:
[Hubname("chathub")]
public class ChatHub: Hub {
private IChat _chat;
public ChatHub(Chat chat){
_chat = chat;
}
}
Это моя зависимость:
public class Chat: IChat{
public Chat(IHubConnectionContext clients, IChatRepo repo){
...
}
}
Я создал класс CustomBootstrapper:
public class CustomBootstrapper : DefaultNancyBootstrapper
{
protected override void ApplicationStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines)
{
base.ApplicationStartup(container, pipelines);
// I'm hoping the registration below will resolve for the IHubConnectionContext parameter for the Chat class
container.Register(GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients);
}
}
У меня есть класс запуска:
public class Startup{
var hubConfiguration = new HubConfiguration { EnableDetailedErrors = true};
app.MapSignalR("/signalr", hubConfiguration);
}
Если у меня есть конструктор без параметров для ChatHub и использовать бедные жених Ioc, все работает отлично.
Я уверен, что у меня что-то не хватает.
Любые идеи?
Спасибо за статью. - Я только что создал пользовательский DependencyResolver, но я не совсем уверен в настройке Resolver. например в статье он настраивает клиентский преобразователь через HubConfiguration. Где, как внутри Nancy, у меня есть CustomBootstrapper, который наследует от DefaultNancyBootstrapper и I на перегрузке ApplicationStartup, устанавливаю ли Resolver там что-то вроде: GlobalHost.DependencyResolver = new TinyIoCDependencyResolver (container)? Я пробовал оба, но безрезультатно. –
Не уверен, что он был оставлен для краткости, но ваш класс Startup не имеет метода «Конфигурация (IAppBuilder app)» в соответствии с приведенной выше статьей. Не уверен, что с вашим стеком Owin по-прежнему участвует, но в моем приложении MVC5 есть также следующая директива сборки: '[сборка: OwinStartup (typeof (Namespace.Of.Startup))]' – Shaun