私は最近 C# / Azure を始めましたが、解決したい小さな問題があります。アプリケーションは意図したとおりに動作しますが、より簡単な解決策があると確信しているため、一連のクラスをリファクタリングしたいと考えています。
私は現在、Azure からエンティティを取得するための一連の関数を持っていますが、それらは取得されるタイプのみが異なりますが、最適には次のような 1 つのクラスのみが必要です。
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));
}
これ自体が機能し、必要なエンティティを取得します。ただし、返されたオブジェクトをエラーなしでキャストすることはできません。
キャストしたいオブジェクト タイプは、TableEntity-Type を実装し、テーブルの Result と一致します。
という意味でキャストできることを知っています
TableOperation.Retrieve<Type>(...)
しかし、この目的のために単一の関数を使用したいので、関数の呼び出し時にキャストする必要があります。
この問題は、結果がタイプ DynamicTableEntity であるという事実に関連していると思われますが、その理由についてはかなり迷っています。
この問題をエレガントに解決する方法はありますか/結果として必要なタイプを保持するパラメーターを確立する方法はありますか? (「Type ...」で試してみましたが、うまくいきません)。