私は2日間、私たちのアプリの簡単なDependency Injectionシステムを迅速に作成しようとしています。私はどのような解決策にも柔軟に対応していますが、何かが欲しいので、 "このプロトコルに準拠したものを私に渡してください"と言うことができます。返される実際のタイプは、私は、ジェネリック医薬品を含む非常に多くの事を試みたが、それは本当に今、私は裸の基礎までだ働くことができないことを把握するために管理している、このような何か(?):クラスがプロトコルに準拠しているかどうかをチェック
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)
それだ美しいではない、I知っているけど、今はデカップリングの問題を解決している限り、パフォーマンス/悪いコードについてはそれほど気にならない(MyDIThingクラスに含まれることが好ましい)。これが迅速に不可能な場合、私は他のソリューションにもオープンしています。 NSStringFromProtocolというキーを持つ辞書とそのクラスである辞書、インバウンドプロトコルの辞書にサブスクライブしてクラスをインスタンス化するだけで、私は同様のソリューションをobjective-cで成功させました。スーパーシンプル。迅速に不可能と感じる!
'if let foo = bar as? MyProtocol {/ * barはプロトコルに準拠しています... fooはMyProtocol型であり、メソッドはそれで呼び出すことができます* /} ' – nhgrif
enumをキーとクロージャーを値として使用して登録ベースの迅速なアプローチを行いました。良い仕事。 –