Recentemente sono entrato in C#/Azure e ho un piccolo problema che mi piacerebbe risolvere. L'applicazione funziona come previsto, ma mi piacerebbe refactoring un sacco di classi perché sono sicuro che c'è una soluzione più semplice.Trasmissione del risultato di TableOperation.Retrieve
Al momento ho un sacco di funzioni per recuperare organismi dei Azure che variano solo per il tipo che viene recuperata, ma in modo ottimale vorrei una sola classe in questo modo:
public static Object Do(string RowKey, string partitionKey, string tableName)
{
var theTable = Connect.Initialize(tableName);
var retrieveOperation = TableOperation.Retrieve(
Base64.EncodeTo64(partitionKey),
Base64.EncodeTo64(RowKey));
var retrievedResult = theTable.Execute(retrieveOperation);
if (retrievedResult.Result != null) {
return retrievedResult.Result;
}
throw new ArgumentException(
String.Format("{0} not found in the Table", RowKey));
}
Questo, di per sé , lavora e recupera le entità richieste. Tuttavia, non posso lanciare l'oggetto restituito senza un errore.
Il tipo di oggetto che voglio trasmettere per implementare TableEntity-Type e corrisponde al risultato fuori dalla tabella.
So che posso gettarlo nel senso di
TableOperation.Retrieve<Type>(...)
ma mi piacerebbe davvero utilizzare una singola funzione per questo scopo, che mi obbliga a gettarlo a chiamare la funzione.
Ho il sospetto che il problema sia legato al fatto che il risultato sia di tipo DynamicTableEntity ma sono piuttosto perso dal motivo.
C'è un modo per risolvere elegantemente questo problema/c'è un modo per stabilire un parametro che contenga il Tipo che voglio come risultato? (L'ho provato con "Type ..." ma non funziona).
avete fatto prova ad usare un tipo generico? Come in: public static T Do (...) { ... TableOperation.Retrieve (...) } –
Questa API è ridicola. – Rookian