Ich bin neugierig auf den Unterschied zwischen diesen beiden Methoden. Ich implementiere ein Decorator-Muster mit offenen Generika und ob ich AddAllTypesOf
oder ConnectImplementationsToTypesClosing
es spielt keine Rolle, bekomme ich die gleiche Funktionalität. 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();
}
}
Der Aufruf von ObjectFactory.WhatDoIHave()
gibt mir auch die gleichen Ergebnisse unabhängig davon, welche Methode ich wählen.
Ich habe den Quellcode angeschaut und diese Methoden machen definitiv verschiedene Dinge, ich konnte einfach nicht genau feststellen, was der Unterschied ist. Gibt es irgendwelche Richtlinien oder Szenarien, wenn man dem anderen vorgezogen wird?
Große Antwort, das ist interessant, ich werde diese Szenarien mit neueren Versionen versuchen und sehen, was passiert. – CSharper