Avatar
Avatar
Iceman
数が増えると型パラが増えることじゃないですか?
1. 指摘して貰ったようにこれは問題になります。複数のリポジトリをコンテナに詰めると、型パラの数がどんどん増えていく
12:31 AM
2. DIコンテナ自体が型パラを持つ場合、循環依存の問題を解決できません
12:34 AM
protocol MyRepository {} class MyRepositoryImpl {} class Container<R1: MyRepository> {} このような構成を考えた場合、Container<MyRepositoryImpl>の宣言と取り回しが必要になり、使う側が具体実装を参照可能な必要が出てきて、これだと例えばframeworkを分離した状態だと、使えない気がしています
12:38 AM
R1自体を利用側にもGenerics R1として宣言することで、Container<R1>の形で引き回すことは可能ですが、その場合利用側を再度Containerで宣言することは出来なくて、依存を細かく分離して都度宣言するようなスタイルにせざるを得ないのかな?と
12:40 AM
existentialからgenericsへの昇格(?)が出来るようにはなってるから、もう少しうまいやり方はある気はしますが、今の所は上記のような感覚を持っています
12:40 AM
@omochimetaru 一旦書いた