EntityResolver
Azure から空のオブジェクトを動的に設定するために使用しようとしていますが、呼び出しを省略しない限りTableResult.Execute
、デバッグはメソッドに入りません。以下を示す例外をスローします。実際の azure テーブル リクエストは問題なく、デバッグでは列の値などを確認できます。理想的にはジェネリックとリフレクションを使用して、それをローカル クラスにマップするだけです。Test
match.SetValue
Method not found: 'System.Nullable`1<Int32> Microsoft.WindowsAzure.Storage.Table.EntityProperty.get_Int32Value()'.
問題は反省に関係していると思いますが、支援が必要です。
public T RetrieveRow(string partitionKey, string rowKey)
{
EntityResolver<IObTable> resolver = (pk, rk, ts, props, etag) => Test(props);
CloudTable table = base.TableClient.GetTableReference(TableName);
TableOperation operation = TableOperation.Retrieve<IObTable>(partitionKey, rowKey, resolver);
TableResult retrievedResult = table.Execute(operation);
return (T)retrievedResult.Result;
}
public IObTable Test(IDictionary<string, EntityProperty> storageProps)
{
IObTable objectToReturn = (IObTable)Activator.CreateInstance(typeof(T));
if (storageProps != null)
{
var emptyObjectProps = objectToReturn.GetType().GetProperties();
foreach (var prop in storageProps)
{
PropertyInfo match = emptyObjectProps.FirstOrDefault(v=> v.Name==prop.Key);
if (match!=null)
{
if (match.PropertyType == typeof(Int32))
{
match.SetValue(prop, storageProps[match.Name].Int32Value);
}
}
}
}
return objectToReturn;
}
IObTable
私のローカルエンティティの単なるマーカーインターフェースです。
どんな助けでも大歓迎です。