2 Stimmen

Auflösen einer generischen Schnittstelle aus einer generischen statischen Methode - ist die Verwendung eines Containers am einfachsten?

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X