private void _doGet(PropertyInfo prop, IInvocation invocation) { if (_state.IsCollection(prop)) { // if the property is of type state collection, we need a special treatment becuase the stored // data is of type List<T>, and also, because we need to monitor changes. var proxy = _ensureProxy(prop); invocation.ReturnValue = proxy; } else { invocation.ReturnValue = _state[prop]; } }