我试图在swift中为我们的应用程序创建一个简单的依赖注入系统,现在为期2天.我对任何解决方案都很灵活,但我想要一些东西,所以我可以说“给我一个符合这个协议的实例”,只要它符合所述协议,返回的实际类型就可以是任何东西.我已经尝试了很多东西,包括泛型,但设法弄清楚那不能(?)真的有用,所以现在我已经完成了基本的工作,如下所示:
原文链接:https://www.f2er.com/swift/320032.htmlprotocol 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)
我知道,它并不漂亮,但是现在我不是那么挑剔性能/坏代码,只要它解决了解耦问题(最好能包含在MyDIThing类中).如果这是不可能的,我会对其他解决方案持开放态度.我使用了类似于objective-c的解决方案并取得了很好的成功,只需要一个字符,其中键是NSStringFromProtocol,值是类,使用入站协议下载字典并实例化类.超级简单.在快速,感觉不可能!