Autofac может сделать автоматическую самопривязку?

Это заменяет начало каждая строка с "//":

:%s!^!//!

Это заменяет начало каждая выбранная строка (используйте визуальный режим для выбора) с "//":

:'<,'>s!^!//!

Примечание , которое gv (в нормальном режиме) восстанавливает последний визуальный выбор, это время от времени пригождается.

10
задан Joe White 9 July 2009 в 12:38
поделиться

2 ответа

builder.RegisterTypesMatching(type => type.IsClass)

Если вы посмотрите на источник , вы увидите, что RegisterTypesMatching (и RegisterTypesFromAssembly) НЕ ДЕЛАЕТ НИКАКОГО ОТРАЖЕНИЯ. Все, что делает Autofac в этом случае, - это регистрация правила, которое принимает тип или нет. В моем примере выше я принимаю любой тип, являющийся классом.

В случае RegisterTypesFromAssembly Autofac регистрирует правило, которое говорит: «Если тип, который вы пытаетесь разрешить, имеет Assembly == указанную сборку, то я дам Вам пример ".

Итак:

  1. никакое отражение типа не выполняется во время регистрации
  2. любой тип, который соответствует критериям, будет разрешен

По сравнению с непосредственной регистрацией конкретных типов, это будет иметь перфоманс при разрешении время, поскольку Autofac должен будет выяснить, например, требования к конструктору. Тем не менее, если вы выберете область действия экземпляра по умолчанию, который является одиночным, вы принимаете удар только при первом разрешении этого типа. В следующий раз он будет использовать уже созданный экземпляр синглтона.

Обновление: в Autofac 2 есть лучший способ сделать контейнер способным разрешать что угодно. Это включает источник регистрации AnyConcreteTypeNotAlreadyRegistered .

14
ответ дан 3 December 2019 в 22:01
поделиться

как насчет:

builder.RegisterTypesFromAssembly(Assembly.GetExecutingAssembly());

отражение не выполняется, как указывает Питер Лиллевольд .

2
ответ дан 3 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: