Let‘sagen, ich habe diese erklärt Wörterbuch:Querying C# Wörterbuch mit Lambda-Ausdrücke
private static Dictionary<int, List<Models.APIAccessControl>> _APIRights = GetAPIRights();
Wo der Schlüssel für den RoleID repräsentiert, repräsentiert der Wert die Klasse:
public class APIAccessControl
{
public APIControllerRoute ControllerRoute { get; set; }
public APIActionRoute ActionRoute { get; set; }
public bool IsAuthorized { get; set; }
}
Ich versuche, zu überprüfen, wenn der Benutzer berechtigt ist, auf diese API zuzugreifen. Meine Idee ist, das Wörterbuch abzufragen und alle Liste von APIAccessControl für die Rollen, dann Abfragen dieser APIAccessControl-Listen für die APIActionRoute, die er versucht zu navigieren:
Ich habe die Wörterbuchwerte, die diese Liste für die Rollen, die ich will , aber wie eine Liste von Werten zu werfen, diese Abfrage Liste und macht:
public static bool CanAccess(int[] roleIDs, APIActionRoute apiActionRoute)
{
bool canAccess = false;
var apiAccessList = _APIRights.Where(x => roleIDs.Contains(x.Key)).Select(x => new { x.Value}).ToList();
//Querying to get all List<Models.APIAccessControl> that has any matchig APIActionRoute
}
Sie können versuchen, die Liste mithilfe der Values-Eigenschaft von Dictionary zu extrahieren. –
können Sie Beispielcode für das Casting und Abfrage bereitstellen, ich versuche, es auf elegante, saubere Weise zu schreiben. Also, wenn Sie irgendwelche Gedanken haben, teilen Sie bitte Ihren Code. Danke – Coding
Sie müssen eine Schleife über apiAccessList verwenden, um alle ActionRoutes zu erhalten und sie in einer Liste hinzuzufügen. Es gibt eine Alternative. Das einzige, was Sie tun können, ist Linq zu verwenden. Lass es mich wissen, wenn das etwas klarstellt –