2017-05-16 43 views
0

在我的項目中,我想創建一個處理所有髒Azure工作的類,並提供一個乾淨的界面,我只需提供存儲的實體。爲什麼我不能創建一個異步構造函數?

我試着在我的構造函數中創建表,但它不允許它。我無法弄清楚這種結構有什麼問題。

任何想法或替代辦法嗎?

乾杯,亞歷克斯

using System; 
using System.Threading.Tasks; 
using Microsoft.Azure; 
using Microsoft.WindowsAzure.Storage; 
using Microsoft.WindowsAzure.Storage.Table; 

namespace MyProject 
{ 
    public class AzureStorage 
    { 
     public async Task<AzureStorage> AzureStorage() 
     { 
      table = await CreateTableAsync("mytable"); 
     } 

     CloudTable table { get; set; } 
    } 
} 

回答

1

據我所知,異步構造是不允許的。由Stephen Cleary編寫的This blog討論了這個問題,並分享了一些替代方案,請閱讀。

異步結構提出了一個有趣的問題。能夠在構造函數中使用await會很有用,但這意味着 構造函數將不得不返回一個代表將來將構造的 值的任務,而不是構造的 值。這種概念將很難用於現有語言。

此外,此線程:Can constructors be async?將幫助您瞭解異步構造函數問題。

+0

會做,謝謝! – AlexandreG

相關問題