Это заменяет начало каждая строка с "//":
:%s!^!//!
Это заменяет начало каждая выбранная строка (используйте визуальный режим для выбора) с "//":
:'<,'>s!^!//!
Примечание , которое gv
(в нормальном режиме) восстанавливает последний визуальный выбор, это время от времени пригождается.
builder.RegisterTypesMatching(type => type.IsClass)
Если вы посмотрите на источник , вы увидите, что RegisterTypesMatching (и RegisterTypesFromAssembly) НЕ ДЕЛАЕТ НИКАКОГО ОТРАЖЕНИЯ. Все, что делает Autofac в этом случае, - это регистрация правила, которое принимает тип или нет. В моем примере выше я принимаю любой тип, являющийся классом.
В случае RegisterTypesFromAssembly Autofac регистрирует правило, которое говорит: «Если тип, который вы пытаетесь разрешить, имеет Assembly == указанную сборку, то я дам Вам пример ".
Итак:
По сравнению с непосредственной регистрацией конкретных типов, это будет иметь перфоманс при разрешении время, поскольку Autofac должен будет выяснить, например, требования к конструктору. Тем не менее, если вы выберете область действия экземпляра по умолчанию, который является одиночным, вы принимаете удар только при первом разрешении этого типа. В следующий раз он будет использовать уже созданный экземпляр синглтона.
Обновление: в Autofac 2 есть лучший способ сделать контейнер способным разрешать что угодно. Это включает источник регистрации AnyConcreteTypeNotAlreadyRegistered
.
как насчет:
builder.RegisterTypesFromAssembly(Assembly.GetExecutingAssembly());