2017-05-16 42 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

相关问题