示例#1
0
        /// <inheritdoc/>
        public async Task <TResult> QueryAsync <TResult>(string queryType, params object[] args)
        {
            Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(queryType));
            Covenant.Requires <ArgumentNullException>(args != null);
            EnsureStarted();

            var argBytes = client.DataConverter.ToData(args);

            return(client.DataConverter.FromData <TResult>(await client.QueryWorkflowAsync(Execution, queryType, argBytes, domain)));
        }
示例#2
0
        /// <summary>
        /// Queries the associated workflow.
        /// </summary>
        /// <typeparam name="TResult">The query result type.</typeparam>
        /// <param name="queryType">Specifies the query type.</param>
        /// <param name="args">Specifies the query arguments.</param>
        /// <returns>The query result.</returns>
        public async Task<TResult> QueryAsync<TResult>(string queryType, params object[] args)
        {
            await SyncContext.Clear;
            Covenant.Requires<ArgumentNullException>(!string.IsNullOrEmpty(queryType), nameof(queryType));
            Covenant.Requires<ArgumentNullException>(args != null, nameof(args));
            EnsureStarted();

            if (Execution == null)
            {
                throw new InvalidOperationException("Query cannot be sent because the stub doesn't have the workflow execution.");
            }

            var argBytes = CadenceHelper.ArgsToBytes(client.DataConverter, args);

            return client.DataConverter.FromData<TResult>(await client.QueryWorkflowAsync(Execution, queryType, argBytes, client.ResolveDomain(Options?.Domain)));
        }