Sono curioso di sapere la differenza tra questi due metodi. Sto implementando un modello di decoratore con generici aperti e se io uso AddAllTypesOf
o ConnectImplementationsToTypesClosing
non importa, ottengo la stessa funzionalità.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();
}
}
La chiamata a ObjectFactory.WhatDoIHave()
mi dà anche gli stessi risultati, non importa quale metodo scelgo.
Ho guardato il codice sorgente e questi metodi stanno sicuramente facendo cose diverse, non sono stato in grado di determinare esattamente quale sia la differenza. Ci sono delle linee guida o degli scenari quando si preferisce l'altro?
Ottima risposta, è interessante, proverò in questi scenari con le versioni più recenti e vedrò cosa succede. – CSharper