Niedawno dostałem się do C#/Azure i mam mały problem, który chciałbym wypracować. Aplikacja działa zgodnie z przeznaczeniem, ale chciałbym refakturować kilka klas, ponieważ jestem pewien, że istnieje prostsze rozwiązanie.Rzucanie wyniku TableOperation.Retrieve
Obecnie ma kilka funkcji do pobierania podmiotów z Azure że tylko różnią się typem, który zostanie odtworzony, ale optymalnie chciałbym tylko jedna klasa tak:
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));
}
To samo w sobie , działa i pobiera wymagane obiekty. Nie mogę jednak rzucić zwróconego obiektu bez błędu.
Obiekt Typ, który chcę obsłużyć, implementuje typ TableEntity i dopasowuje wynik z tabeli.
wiem, że mogę rzucić go w sensie
TableOperation.Retrieve<Type>(...)
ale naprawdę chciałbym użyć jedną funkcję dla tego celu, który wymaga ode mnie rzucić go na wywołanie funkcji.
Podejrzewam, że problem jest związany z faktem, że wynik jest typu DynamicTableEntity, ale jestem dość zagubiony, dlaczego.
Czy istnieje sposób na rozwiązanie tego problemu w sposób elegancki/czy istnieje sposób na ustanowienie parametru, który zawiera pożądany typ? (Próbowałem go z "Type ...", ale to nie działa).
skończyłeś spróbuj użyć typu ogólnego? Tak jak w: public static T Do (...) { ... TableOperation.Retrieve (...) } –
Ten interfejs API jest niedorzeczny. – Rookian