Vedi il seguente codice (contenuto in un metodo IEnumerable):
int Quantity = (int)Math.Floor(ChangeRequired / CurrencyAmount);
ChangeDenomination = ChangeDenominationsFactory.Create(CurrencyAmount, Quantity);
yield return ChangeDenomination;
ChangeRequired = ChangeRequired - (ChangeDenomination.Amount * ChangeDenomination.Quantity);
ChangeDenominationsFactory e ChangeDenomination sono iniettati nel costruttore.
Come puoi vedere la classe ChangeDenomination ha un costruttore di argomenti zero - è immutabile.
Sto usando Castle Windsor. Ci sono due modi in cui posso configurarlo:
1) Introdurre un costruttore di argomenti zero in ChangeDenomination appositamente per Castle Windsor. 2) Configura Castle Windsor in modo che ChangeDenomination abbia gli argomenti necessari come segue:
Component.For<IDenomination, Denomination>().DependsOn(Dependency.OnValue("amount", 0.0M), Dependency.OnValue("quantity", 0))
Entrambi gli approcci funzionano come previsto. Quale è la "migliore pratica".