Ich habe einen ähnlichen Code wie diesen:
public static IEnumerable<T> ParseInput<T>(string input)
{
var xml = XElement.Parse(input);
// some more code here
var parser = Container.Current.Resolve<IParser<T>>();
return parser.Parse(xml);
}
Sie enthält einige gemeinsame Verarbeitungen der Daten, gefolgt von einem Aufruf der Parser-Schnittstelle, die sich zwischen den Spezialisierungen stark unterscheidet. Derzeit löse ich die Parser-Schnittstelle aus einem Container auf - aber ich fühle mich etwas unwohl bei der Verwendung eines Containers aus einer statischen Methode.
Gibt es einen besseren oder alternativen Weg, um die Schnittstelle aufzulösen, abgesehen von dieser und der switch-Anweisung?
Edit: Meiner Meinung nach rührt die Zotteligkeit von dem Versuch her, unit-testbare OO-Programmierung (IoC, keine statischen Klassen) mit funktionaler Programmierung zu verbinden. Wo ist die sauberste Linie der Trennung? Wahrscheinlich, indem man den Parser früher auflöst und ihn in die statische Methode übergibt.