So fügen Sie Methodenparameter in benutzerdefinierte Attribute ein

Ich habe ein benutzerdefiniertes Attribut namens AuthoriseAttribute, dessen Konstruktor folgendermaßen aussieht:

<code>public AuthoriseAttribute(int userId)
{
  .. blah
}
</code>

Dies wird mit einer aufgerufenen Methode verwendetGetUserDetails() so was:

<code>[Authorise(????????)]
public UserDetailsDto GetUserDetails(int userId)
{
  .. blah
}
</code>

Zur Laufzeit führt das Vorhandensein des Attributs Authorize dazu, dass ein Autorisierungscode ausgeführt wird, für den die ID des Benutzers erforderlich ist. Offensichtlich kann dies aus dem Parameter der extrahiert werdenGetUserDetails() Dies bedeutet jedoch, dass der Autorisierungscode davon abhängt, ob dem Parameter der Methode ein bestimmter Name zugewiesen wird.

Ich möchte in der Lage sein, den tatsächlichen Wert der zu übergebenuserId Parameter in das Attribut ein, so dass der Autorisierungscode mit dem Wert arbeitet, der an das Attribut (d. h. nicht den Methodenparameter) übergeben wurde, dessen Name bekannt ist.

So etwas (was nicht funktioniert):

<code>[Authorise(userId)]
public UserDetailsDto GetUserDetails(int userId)
{
  .. blah
}
</code>

Ist so etwas möglich?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage