Übergeben von Objektinstanzdaten zum Attribut
-
21-09-2019 - |
Frage
Ich möchte bestimmte Daten aus einer Instanz eines Objekts an sein Attribut weitergeben, und ich habe Probleme, die zu implementieren. Hier ist ein Beispiel:
[AuthenticateAttribute]
public class MyController: Controller
{
UserInfo info;
}
Die Idee ist das AuthenticateAttribute
Die Instanz würde die Benutzerinfo -Instanz bevölkern.
Ich möchte einen Hinweis darauf geben info
zu einer Instanz von AuthenticateAttribute
und dadurch eine starke Kopplung zwischen dem Attribut und dem Besonderen beseitigen MyController
Klasse.
Ist das möglich?
Lösung
Das Attribut selbst sollte das nicht haben UserInfo
Feld imo. Denken Sie daran, dass es eine Instanz des Attributs für die geben wird Typ Es wird auf - nicht pro Instanz dieses Typs angewendet.
Wenn Sie ein umfassenderes Beispiel geben könnten (zeigen den Code, auf den er angewendet wird), können wir möglicherweise mehr helfen ...
Andere Tipps
Die ViewData -Sammlung des Controllers ist über das Attribut aus zugegriffen und Sie können Ihr Benutzerinfo -Objekt dazu hinzufügen und dann in den Acions des Controllers darauf zugreifen. Sie können auch ein typisiertes Modell verwenden, das UserInfo enthält. Dieses Szenario wird hier beschrieben Erhalten Sie die Erlaubnis von Autorize Attribut?
Das Ändern von Typfeldern im Attribut, das darauf angewendet wird, ist nicht üblich und Sie müssen sehr vorsichtig sein.