This link describes a function on a Money object for adding funds together of different currencies.
First I do not want to use the Service Locator pattern. I currently use a pattern of not having the Money object do the conversion itself. It just throws if you try and add different currencies together.
I have the object which owns Money objects (i.e. MultiCurrencyAccount) handle the math operations on Money. My problem is that I am currently constructor injecting a IMoneyConverter into the MultiCurrencyAccount domain object. This feels dirty to me since the IMoneyConverter is really a service which in turn uses a IForeignExchangeService (this one can hit the DB). I know I am not supposed to care about the implementation, since I am dealing with an abstraction, but it feels weird.
I am not sure if I am off base and injecting a service into my domain object is "correct" or if there is a more elegant way to do this.