Вызывающий метод не может видеть переменную - PullRequest
0 голосов
/ 10 октября 2019

У меня есть этот фрагмент кода, который в основном получает строку подключения из файла json appsettings и создает объект конфигурации, который будет использоваться кодом для подключения к конкретной базе данных. Этот код необходимо вызывать из различных методов, поэтому я пытаюсь создать метод, в котором мне не нужно повторять код, но в вызывающем методе компилятор сообщает, что переменная конфигурации не существует в текущем контексте, может кто-нибудь помочь,заранее спасибо!

  private static void GetJSONConnection()
        {
            var builder = new ConfigurationBuilder();
            builder.AddJsonFile("appsettings.json", optional: false);
            var configuration = builder.Build();
        }

  public static void CreateDB()
        {
 var connectionString = configuration.GetConnectionString("SQLConnection");
}

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Ваша переменная configuration является локальной, поэтому к ней нельзя получить доступ другим способом. Попробуйте вернуть его из метода и вместо этого вызвать этот метод:

private static Configuration GetJSONConnection()
{
    var builder = new ConfigurationBuilder();
    builder.AddJsonFile("appsettings.json", optional: false);
    var configuration = builder.Build();
    return configuration;
}

public static void CreateDB()
{
    var connectionString = GetJSONConnection().GetConnectionString("SQLConnection");
}

Я бы порекомендовал почитать об областях и взглянуть на некоторые основные вводные руководства по C # в Интернете, чтобы попытаться понять это.

1 голос
/ 10 октября 2019

configuration - локальная переменная, поэтому вы не можете получить к ней доступ из другой области (например, из CreateDB().

. Простым решением было бы превратить configuration в поле вашего класса). :

private static IConfiguration _configuration;

private static void GetJSONConnection()
{
     var builder = new ConfigurationBuilder();
     builder.AddJsonFile("appsettings.json", optional: false);
     _configuration = builder.Build();
}

public static void CreateDB()
{
     var connectionString = _configuration.GetConnectionString("SQLConnection");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...