Überprüfen Sie, ob-Klasse entspricht-Protokoll

Ich versuche, eine einfache Dependency-Injection-system für unsere app in swift, für 2 Tage jetzt. Ich bin flexibel, was die Lösung aber ich möchte so etwas kann ich sagen: "geben Sie mir ein Beispiel von etwas, das in Einklang mit diesem Protokoll" und der tatsächliche Typ zurückgegeben werden kann, wie auch immer, solang es entspricht dem Protokoll. Ich habe versucht, eine große viele Dinge, einschließlich Generika, konnte aber herausfinden, dass es nicht(?) wirklich arbeiten, so jetzt bin ich runter auf die nackten Grundlagen, so etwas wie dieses:

protocol AProtocol {

}

class AClass: AProtocol {

} 

class MyDiThing {
    public static func objectConformingTo(aProtocol: Any) -> Any? {
        //And here I want to do something like
        if AClass is aProtocol {
            return AClass()
        }
        return nil
    }
}

//The calling code ..
let aObject = MyDIThing.objectConformingTo(AProtocol)

Es ist nicht schön, ich weiß, aber jetzt bin ich nicht wählerisch, Leistung/schlechten code, solange er löst das Problem der Entkopplung von problem (und am besten eingedämmt werden kann, in der MyDIThing Klasse). Wenn dies nicht möglich ist in swift ich bin offen für andere Lösungen. Ich habe ähnliche Lösungen mit objective-c mit gutem Erfolg, nur mit einem Wörterbuch mit Schlüssel NSStringFromProtocol und Werte, die Klasse, die dictionary-subscripting mit inbound protocol (eingangsprotokoll) und Instanziierung der Klasse. Super einfach. In swift fühlt es sich unmöglich!

Schreibe einen Kommentar