Мне любопытно относиться к различию между этими двумя методами. Я реализую шаблон декоратора с открытыми дженериками и использую ли я AddAllTypesOf
или ConnectImplementationsToTypesClosing
, это не имеет значения, я получаю ту же функциональность.AddAllTypesOf vs 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()
также дает мне те же результаты, независимо от того, какой метод выбрать.
Я посмотрел исходный код, и эти методы определенно делают разные вещи, я просто не смог точно определить, в чем разница. Существуют ли какие-либо рекомендации или сценарии, когда вы предпочитаете друг друга?
Отличный ответ, это интересно, я попробую эти сценарии с более новыми версиями и посмотрю, что произойдет. – CSharper