Circular reference detected for services
- motorcb
- Člen | 552
Zdravim.
Vytvářím hru ve které za každé přihlášení dostane uživatel
10 bodů.
Připisovnání bodů jsem si vytvořil CreditFactory, která připíše uživateli body (časem v této třídě bude připisovaní bodů za souboje, objevení nového území, … prostě vše co souvisí s bodama).
Když se uživatel přihlásí, podívám se zda se dnes přihlásil poprvné
(to dělám v modelu UserManager)
Pokud se přihlásil poprvé zavolám továrnu CreditFactory kde mám metodu pro
připsání bodů za přihlášení.
Problém je v tom, že v CreditFactory používám model UserManager a
laděnka mi končí chybou:
Circular reference detected for services
Jak na to? Nebo co dělám špatně?
- Šaman
- Člen | 2666
No, asi děláš něco špatně. Zkus si vypsat, co která třída dělá (tady asi především CreditFactory a UserManager) a jestli by se nedala rozdělit na víc tříd. Potřebuje UserManager skutečně CreditFactory, nebo jen nějaká data, která mu může předat třeba presenter? Ideální je mít co nejméně přímých závislostí. V případě, že dvě třídy spolu musí blízce komunikovat, se dá vytvořit obalující třída, která obsahuje (závisí na) obě problematické třídy a v ní je ten kód, pro který jsou obě závislosti potřeba (takže jestli jí UserManager řekne, že se jedná o první přihlášení, je to ona kdo zaúkoluje CreditFactory aby připsala správný počet bodů).