Мне любопытно узнать о различии между этими двумя методами. Я реализую шаблон декоратора с открытыми генериками и использую ли я AddAllTypesOf
или ConnectImplementationsToTypesClosing
, это не имеет значения, я получаю ту же функциональность.
public class CommandRegistry : Registry
{
public CommandRegistry()
{
For<CommandProcessor>().Use<DefaultCommandProcessor>().Transient();
Scan(scanner =>
{
scanner.AssemblyContainingType<SaveCoolCommandHandler>();
//scanner.AddAllTypesOf(typeof(CommandHandler<>));
//scanner.AddAllTypesOf(typeof(IValidator<>));
//scanner.AddAllTypesOf(typeof(LogMehh<>));
scanner.ConnectImplementationsToTypesClosing(typeof(CommandHandler<>));
scanner.ConnectImplementationsToTypesClosing(typeof(IValidator<>));
scanner.ConnectImplementationsToTypesClosing(typeof(LogMehh<>));
});
var handlerType = For(typeof(CommandHandler<>));
handlerType.DecorateAllWith(typeof(CommandValidator<>)); //Second
handlerType.DecorateAllWith(typeof(CommandLogger<>)); //First
// ObjectFactory.WhatDoIHave();
}
}
Вызов ObjectFactory.WhatDoIHave()
также дает мне те же результаты, независимо от того, какой метод я выбираю.
Я посмотрел исходный код, и эти методы определенно делают разные вещи, я просто не смог точно определить, в чем разница. Существуют ли какие-либо рекомендации или сценарии, когда вы предпочитаете друг друга?