Hi,
Everything comes to the fact that RepeatAlways is only applied to the last call of the chain:
ExchangeRateModel.NominalValue[0];
In this case the only the call to "[0]" will be repeated and the calls to
ExchangeRateModel.NominalValue will be mocked once - per recording statement.
In your first post ont the second call:
double d2 = ExchangeRateModel.NominalValue[0]; // null reference here
The real NominalValue property is activated and since the underlying array is not initialized you get an exception.
In your second post, in the part which does work you actauly put two expecatation for the calls to NominalValue.
:!: As I mentioned in previous posts, this behavior of RepeatAlways is something we consider as an issue to be changed/fixed.