ASP.NET Core 2.1 Использование переменных вне функции - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть этот TypeFilter

[TypeFilter(typeof(ValidateRolesFilter), Arguments = new object[] {
      configuration["key"], RoleGlobals.SystemAdministrator
})]
public IActionResult About()
{
    return View();
}

В конструкторе класса выше я объявил конфигурацию, подобную этой

public HomeController(IApplicationUserClient getUserClient, IConfiguration configuration)
{
    this.getUserClient = getUserClient;
    this.configuration = configuration;
}

Однако, когда я пытаюсь объявить конфигурацию ["Item"], в моем typefilter, это не позволит мне. Я могу сделать это только внутри функций.

Что я могу сделать, чтобы я мог использовать свою конфигурационную переменную вне функции? Я пытался сделать его константой, но он не работал, потому что он читает из appsettings.json.

1 Ответ

0 голосов
/ 02 ноября 2018

Вы не.

[TypeFilter(typeof(ValidateRolesFilter), Arguments = new object[] {
  configuration["key"], RoleGlobals.SystemAdministrator})]

Строка над ней, которая называется Атрибуты (C #) . Атрибуты являются директивами времени компиляции, которые могут читать во время выполнения.

Переменная configuration["key"] загружается во время выполнения. Поэтому компилятор потерпит неудачу.

Вот еще один дизайн. Создайте ValidateRolesFilter в своем конструкторе.

public HomeController(IApplicationUserClient getUserClient, IConfiguration configuration)
{
    this.getUserClient = getUserClient;
    this.configuration = configuration;

    // This is just a guess; I have no idea what this object is
    this.canAccessAbout = new ValidateRolesFilter(configuration["key"], RoleGlobals.SystemAdministrator);
}

Тогда в вашем О методе:

public IActionResult About()
{
    // again, this is just a guess 
    if (this.canAccessAbout.Validate())
    {
        return View();
    }
    else
    {
        // redirect them or display error page
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...