Как я могу получить все значения раздела сразу в мой класс? - PullRequest
0 голосов
/ 14 марта 2019

Я использовал для получения значений моей конфигурации, как это:

public Startup(IConfiguration Configuration)
  {
   GraphDBL.Config.Uri = Configuration.GetSection("neo4j:host").Value;
   GraphDBL.Config.UserName = Configuration.GetSection("neo4j:user_name").Value;
   GraphDBL.Config.Password = Configuration.GetSection("neo4j:password").Value;
  }

мой класс конфигурации `

public class Config
{
    public static string Uri { get; set; }
    public static string UserName { get; set; }
    public static string Password { get; set; }
}

Как я могу получить результат этого в одном процессе?не по очереди?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Вам необходимо добавить пакет Microsoft.Extensions.Configuration.Binder, чтобы можно было использовать метод расширения GetValue.

Чтобы отобразить раздел в класс, вам нужно иметь свойства с такими же именами, как у конфигурации

public class Conf
{
    public string Host { get; set; }

    public string User_Name { get; set; }

    public string Password { get; set; }
}

И получите такую ​​конфигурацию

GraphDBL.Config = Configuration.GetSection("neo4j").Get<Config>();

Или, если вы не хотите изменять имена свойств, вы можете использовать этот трюк

public class Config
{
    private string host { get; set; }
    private string user_name { get; set; }

    public string Uri
    {
        get
        {
            return host;
        }
        set
        {
            host = value;
        }
    }


    public string UserName
    {
        get { return user_name; }
        set
        {
            user_name = value;
        }
    }

    public string Password { get; set; }
}

И получить конфигурацию

GraphDBL.Config = Configuration.GetSection("neo4j").Get<Config>(options => options.BindNonPublicProperties = true);
0 голосов
/ 14 марта 2019

Если вы изучите IConfigurationSection, вы увидите, что у него есть свойство Value, которое можно использовать для получения значения.

Вы должны указать полный путь в качестве параметра для GetSection,используя двоеточие как это:

GetSection("neo4j:host").Value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...