Ich versuche, eine Funktion zu erstellen, um ein Array von Metatypen zurückzugeben, die ich dann zum Auflösen von Instanzen aus einem Swinject Resolver
verwenden kann. Hier ist mein Code:Swinject: Auflösen mit einer Liste von Metatypen
protocol Task: class { }
func getTypes() -> [Task.Type] {
return [ConcreteTaskA.self, ConcreteTaskB.self]
}
var concreteTasks = [Task]()
for type in getTypes() {
// Use a Swinject Container to resolve the metatype.
let task = container.resolver.resolve(type)! // Error here: Cannot invoke 'resolve' with an argument list of type '(Task.Type)'
concreteTasks.append(task)
}
Ich bin mir nicht sicher, wie man das löst. Muss ich Generika irgendwie mit der Methode getTypes()
verwenden? Muss ich beim Entschlüsseln ein Äquivalent von type.self
anrufen?
Meine Anforderungen sind, dass ich eine Liste von Metatypen ([ConcreteTaskA.self, ConcreteTaskB.self]
) definieren kann, die von einem Resolver aufgelöst werden.