为什么我不能创建异步构造函数?

时间:2017-05-16 22:39:48

标签: azure azure-table-storage nosql

在我的项目中,我想创建一个处理所有脏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 个答案:

答案 0 :(得分:1)

据我所知,不允许使用异步构造函数。由Stephen Cleary撰写的This blog讨论了这个问题并分享了一些替代方案,请阅读。

  

异步构造带来了一个有趣的问题。能够在构造函数中使用await会很有用,但这意味着   构造函数必须返回一个表示一个的Task   将来构建的价值,而不是构造的价值   值。这种概念很难融入其中   现有语言。

此外,这个帖子:Can constructors be async?可以帮助你理解异步构造函数问题。