Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Unity - регистрация по соглашению / 11 сообщений из 11, страница 1 из 1
08.02.2017, 07:30
    #39400561
Перегонщик перекупки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
когда вручную регистрирую типы:
Код: c#
1.
2.
3.
...
container.RegisterType<ISomeService, SomeService>();
...


все норм.
когда делаю так:
Код: c#
1.
2.
3.
4.
5.
container.RegisterTypes(
      AllClasses.FromLoadedAssemblies().IsService(), //IsService() - метод-расширения для выборки нужных типов
      WithMappings.FromAllInterfaces,
      WithName.Default,
      WithLifetime.PerResolve);


в рантайме падает при обращении к API-контроллерам: "в контроллере нет конструктора по умолчанию".
что тут может быть не так?
подозреваю, что какие-то настройки по-умолчанию в RegisterType и в RegisterTypes отличаются.
...
Рейтинг: 0 / 0
08.02.2017, 08:01
    #39400563
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
Перегонщик перекупки,

Накидай юнит-тест для расширения IsService, чтобы быть уверенным, что твои контроллеры захватываются.
...
Рейтинг: 0 / 0
09.02.2017, 17:32
    #39401796
gibson-les-paul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
спасибо.
дело, как всегда, "было не в бобИне":
Код: c#
1.
.IsService()


не возвращал часть типов, нужных для регистрации.

но вот ошибка "в контроллере нет конструктора по умолчанию" деморализовала: какого рожна? такбы и выдал "такая-то фигня не известна"
...
Рейтинг: 0 / 0
09.02.2017, 18:27
    #39401827
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
gibson-les-paulно вот ошибка "в контроллере нет конструктора по умолчанию" деморализовала: какого рожна? такбы и выдал "такая-то фигня не известна"

Все верно выдал )
...
Рейтинг: 0 / 0
09.02.2017, 18:28
    #39401828
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
gibson-les-paul,

Только сейчас заметил, ты клон?
...
Рейтинг: 0 / 0
09.02.2017, 18:33
    #39401831
gibson-les-paul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
hVosttgibson-les-paul,

Только сейчас заметил, ты клон?

не заморачивайся
...
Рейтинг: 0 / 0
09.02.2017, 18:56
    #39401848
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
gibson-les-paulне заморачивайся

Два аккаунта для ПТ? Оригинально :)
...
Рейтинг: 0 / 0
09.02.2017, 19:00
    #39401851
gibson-les-paul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
hVosttgibson-les-paulне заморачивайся

Два аккаунта для ПТ? Оригинально :)

лучше поделись магией, почему на конструктор ругается
...
Рейтинг: 0 / 0
09.02.2017, 19:21
    #39401869
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
gibson-les-paulлучше поделись магией, почему на конструктор ругается

Ничего магического, исходники ASP.NET MVC открыты :

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
private class DefaultControllerActivator : IControllerActivator
        {
            private Func<IDependencyResolver> _resolverThunk;

            public DefaultControllerActivator()
                : this(null)
            {
            }

            public DefaultControllerActivator(IDependencyResolver resolver)
            {
                if (resolver == null)
                {
                    _resolverThunk = () => DependencyResolver.Current;
                }
                else
                {
                    _resolverThunk = () => resolver;
                }
            }

            public IController Create(RequestContext requestContext, Type controllerType)
            {
                try
                {
                    return (IController)(_resolverThunk().GetService(controllerType) ?? Activator.CreateInstance(controllerType));
                }
                catch (Exception ex)
                {
                    throw new InvalidOperationException(
                        String.Format(
                            CultureInfo.CurrentCulture,
                            MvcResources.DefaultControllerFactory_ErrorCreatingController,
                            controllerType),
                        ex);
                }
            }
        }
}



Видишь, если некий сервис не создал контроллер, то пытается создать контроллер через конструктор по умолчанию. Которого нет.
...
Рейтинг: 0 / 0
09.02.2017, 20:00
    #39401883
gibson-les-paul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
этот?
Код: c#
1.
Activator.CreateInstance(controllerType))
...
Рейтинг: 0 / 0
09.02.2017, 22:21
    #39401927
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unity - регистрация по соглашению
gibson-les-paul,

Угу
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Unity - регистрация по соглашению / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]