Как получить константу через интерфейс вместо ссылки непосредственно на класс (ActionFilterAttribut с аргументом) - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу передать аргумент (определенную роль из принципала) в ActionFilterAttribute.Принципалы / роли хранятся в другом проекте в статическом классе.Я хочу взаимодействовать с другим проектом только через интерфейс, чтобы он был «чистым».Кажется, проблема в следующем: мне нужна константа для ActionFilterAttribute.Каждый раз, когда я хочу передать роль через интерфейс «GetRegularUserRole», я получаю ссылку на объект нестатического поля.

Мое текущее решение - вызвать сам класс и роль.

Часть моегоКонтроллер

private IGeolocator _getLocation { get; }
private IPrincipals _principals { get; }


public GeoLocationController(IGeolocator getLocation, IPrincipals 
principals)
{
        _getLocation = getLocation;
        _principals = principals;
}

[HttpPost]
[Route("GetGeoLocation")]
[RoleRestrictions(_principals.GetRegularRole())]

Класс Role

public static class Roles
{
    public const string _Regular = "regular";
    public const string _Master  = "master";
}

Как бы я хотел вызвать их через интерфейс

public string GetMasterRole()
{
    return Roles._Master;
}

public string GetRegularRole()
{
    return Roles._Regular;
}

Мое текущее решение для установки ActionFilterAttribute

[RoleRestrictions(Roles._Regular)]

Я не удовлетворен этим решением, и я ищу другой способ ... лучше всего было бы с интерфейсом.

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