public override async Task <DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (this.Disabled != null && this.Disabled.GetValue(dc.State) == true)
            {
                return(await dc.EndDialogAsync(cancellationToken : cancellationToken).ConfigureAwait(false));
            }

            CloudTable table        = GetCloudTable(dc);
            var        partitionKey = PartitionKey.GetValue(dc);
            var        rowKey       = RowKey.GetValue(dc);

            TableResult results = await table.ExecuteAsync(TableOperation.Retrieve(partitionKey, rowKey)).ConfigureAwait(false);

            var result = EntityToJObject((DynamicTableEntity)results.Result);

            if (this.ResultProperty != null)
            {
                dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result);
            }

            return(await dc.EndDialogAsync(result : result, cancellationToken : cancellationToken).ConfigureAwait(false));
        }