Розробляючи карткову гру, в якій обидва гравці використовують ману, я стикнувся із проблемою залежності внедрення. Для управління маною я створив клас ManaManager та зв’язав його за допомогою методу WithId:
1 2 3 4 5 6 7 |
public override void InstallBindings() { // Зв'язати ManaManager для Team.Ally Container.Bind<ManaManager>().WithId(Team.Ally).AsSingle(); // Зв'язати ManaManager для Team.Enemy Container.Bind<ManaManager>().WithId(Team.Enemy).AsSingle(); } |
Складність виникає, коли я намагаюся створити скрипт для візуалізації мани. Я б хотів згуртувати всі операції з UI в одному класі, назвавши його ManaGraphics. Однак, я не впевнений, чи можливо динамічно змінити Inject Id, або мені слід використовувати підкласи:
1 2 3 4 5 |
[Inject] public void Constructor([Inject(Id = Team.Ally)] ManaManager manaManager) { _manaManager = manaManager; } |
Наразі я вирішив проблему, створивши клас AllyManaGraphics, який відповідає за внедрення залежностей. Однак цей підхід виглядає неоптимально, оскільки я коливаюся, чи варто вбудовувати графічну обробку в клас ManaManager, зважаючи на те, що зараз не потрібен інтерфейс для ворога.
Можливо, я упускаю щось важливе?