.NET Core 2.0中的扩展方法用法?

时间:2018-01-30 04:34:55

标签: c# .net azure asp.net-core-2.0

我正在尝试使用Microsoft.Azure.Management.Compute ComputeManagementClient Usage属性列出Azure的所有资源使用情况。

我特意使用Usage.ListAsync()来实现这一目标。根据{{​​3}},这是一种扩展方法。

在使用以下内容创建ComputeManagementClient的实例后,我正在调用扩展方法:

    public async Task<IComputeUsage> GetResourceUsage(int customerId)
    {
        var azureClient = _dbContext.CreateAzureComputeClient(customerId);

        var usageReport = await azureClient.Usage.ListAsync();
    }

但是,这会返回以下错误:

'IUsageOperations' does not contain a definition for Listasync and the best extention method overload ProvidersOptionsExtensions.ListAsync... Requires a receiver of type 'IProvidersOperations'

这是一个错误,还是我错误地调用了该方法?

编辑:我在我的代码中使用了正确的命名空间:

using System.Threading.Tasks;
using Microsoft.Azure.Management.Compute;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.Compute.Fluent;

但是,VS2017并未指明名称空间使用情况(灰色,而不是黑色)。

1 个答案:

答案 0 :(得分:1)

您正在错误地调用Usage.ListAsync()方法 - 它看起来像是一个字符串参数:

  

ListAsync(IUsageOperations, String, CancellationToken)

     

获取,为   指定位置,当前计算资源使用信息为   以及订阅下的计算资源限制。

事实上,在代码中,它提到您需要一个位置:

enter image description here

因此请将您的代码更新为:

var usageReport = await azureClient.Usage.ListAsync("[resourceId('Microsoft.Storage/storageAccounts','examplestorage')]");