首页 > 解决方案 > CS0122:“AmazonGlacierClient.ListVaults()”因其保护级别而无法访问

问题描述

我收到以下错误: https ://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0122

Program.cs(42,34):错误 CS0122:“AmazonGlacierClient.ListVaults()”由于其保护级别而无法访问 [/app/myglacier.csproj]

运行此代码时:

var response = this.client.ListVaults();

sdk链接:

  1. https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Glacier/MGlacierListVaults.html
  2. https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Glacier/TGlacierClient.html
  3. https://docs.aws.amazon.com/sdkfornet/v3/apidocs/

我的问题:

为什么我在“虚拟公共”方法上收到此错误?为什么我无法访问它?

完整代码:

using System;
using System.Collections.Generic;
using Amazon.Glacier;
using Amazon.Glacier.Model;

namespace myglacier
{
  class Program
  {
    static void Main(string[] args)
    {

      Myglacier mg = new Myglacier();

      mg.init();

      var vl = mg.getVaults();
      Console.WriteLine("Hello World!");
    }
  }

  public class Myglacier
  {
    public AmazonGlacierClient client = null;
    public void init()
    {
        AmazonGlacierClient client;
        client = new AmazonGlacierClient("&&&&&&&&&", "++++++++++++", Amazon.RegionEndpoint.USEast1); 
    }

    public List<DescribeVaultOutput> getVaults()
    {
        var response = this.client.ListVaults();

        List<DescribeVaultOutput> vaultList = response.VaultList;

        return vaultList;
    }
  }
}

标签: c#.netamazon-web-servicesamazon-glacieraws-sdk-net

解决方案


适用于 .NET 的 AWS 开发工具包因目标开发工具包而异。例如,Glacier 有3 个不同的目标

  • _bcl35
  • _bcl45
  • _netstandard

.NET 3.5 目标没有AmazonGlacierClient,所以我们可以排除它。您的目标是 .NET Framework >= 4.5 或 .NET Standard(可能是 .NET Core)的某些实现。

.NET 4.5+ 版本确实有一个公共GetVaults()方法。
.NET Standard 版本只有一个 internal GetVaults(),但你有一个ListVaultsAsync()可以使用的 public。

请记住,适用于 .NET 的 SDK 是开源的,如果文档在这种情况下看起来有误,您可以随时查看。


推荐阅读