private async Task <T> GetAsync <T>(TableQuery query, string searchFilter) { var tableClient = account.CreateCloudTableClient(); var table = tableClient.GetTableReference(CollectionName); var outVal = (T)Activator.CreateInstance(typeof(T)); var content = outVal.GetType().GetGenericArguments().Length > 0 ? outVal.GetType().GetGenericArguments()[0] : null; TableContinuationToken token = null; do { var results = await table.ExecuteQuerySegmentedAsync(query, token); token = results.ContinuationToken; foreach (var entity in results.Results) { if (outVal.GetType().GetMethod("Add") != null && content != null) { var val = AzureFormatHelpers.RecastEntity(entity, content); outVal.GetType().GetMethod("Add").Invoke(outVal, new[] { val }); } else { return((T)AzureFormatHelpers.RecastEntity(entity, typeof(T))); } } } while (token != null); return(outVal); }
public T Post <T>(T record) { if (record is ITableEntity) { //just send the object in var table = PostAsync(record).Result; } else { //work it into the correct format. var recordProps = record.GetType().GetProperties(); var obj = AzureFormatHelpers.BuildTableEntity(recordProps, record); TableResult table = PostAsync((ITableEntity)obj).Result; } return(record); }