public virtual Uri GetUriForViewModelRequest(ReactiveViewModelRequest request) { var viewType = viewLocator.GetViewTypeForViewModelType(request.ViewModelType); if (viewType == null) { throw new InvalidOperationException("No view type found for" + request.ViewModelType); } string requestString = this.navigationSerializer.SerializeObject(request); string uriString = string.Format("{0}?request={1}", this.GetUriPartForView(viewType), Uri.EscapeDataString(requestString)); return(new Uri(uriString, UriKind.Relative)); }