2013-05-30 35 views
9

我最近进入了C#/ Azure,并且遇到了一个我想解决的小问题。该应用程序按预期工作,但我想重构一堆类,因为我确信有一个更简单的解决方案。施放TableOperation的结果.Retrieve

我现在有一组函数来检索Azure的,只有在被检索的类型有所不同的实体,但最佳我只想要一个类,像这样:

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并将结果与​​表格匹配。

我知道我可以施展它的

TableOperation.Retrieve<Type>(...) 

感,但我真的想用一个单一的功能用于此目的,需要我丢在调用该函数。

我怀疑这个问题与结果是DynamicTableEntity类型的事实有关,但我为什么会迷失方向。

有没有什么办法可以很好地解决这个问题/有没有办法建立一个参数来保存我想要的类型作为结果? (我用“Type ...”尝试过,但不起作用)。

+3

你有没有尝试使用通用类型?如: public static T Do(...){ ... TableOperation.Retrieve (...) } –

+0

此API非常荒谬。 – Rookian

回答

-4

您可以使用泛型类型的功能在C#

参考this link

您也可以参考的计算器例子here

0

你可以尝试这样的事:

return (Entity)retrievedResult.Result; 

class Entity : TableEntity 
{ 
    public string PartKey => PartitionKey; 
    public string RowKey => RowKey; 
}