Attribut mit Methodenname

8

Ich denke, Sie können nicht, aber gibt es eine Möglichkeit, eine Methode als Parameter eines Attributs zu referenzieren? I.e. etwas wie unten? Ich kann zurückgreifen, um Zeichenfolgen zu verwenden, aber lieber die Compiler-Zeit verwenden, um zu überprüfen, ob die Typen korrekt sind.

%Vor%     
Rosstified 17.12.2012, 22:55
quelle

2 Antworten

2

Entschuldigung, aber Sie können nicht. Nur diese können als Argumente für Attribute übergeben werden:

  • Einer der folgenden Typen: bool, byte, char, double, float, int, long, kurz, string.
  • Das Typobjekt.
  • Der Typ System.Type.
  • Ein Aufzählungstyp, sofern er öffentlich zugänglich ist und die Typen, in denen er verschachtelt ist (falls vorhanden), auch öffentlich zugänglich sind.
  • Eindimensionale Arrays der oben genannten Typen.

Diese Frage ist Ihrer ähnlich: Is it möglich, einen Delegaten als Attributparameter zu haben? . Dort ist eine Problemumgehung verfügbar, die für Sie nützlich sein kann.

    
Fabio 17.12.2012, 23:06
quelle
0

Nicht direkt nein. Sie könnten es als String übergeben und dann Reflection verwenden, um eine MethodInfo zu generieren, oder noch besser, markieren Sie die Methoden mit den Attributen LinkedFrom und LinkedTo.

Es ist zwar nicht effizient, aber es wäre auch ein bisschen zu arbeiten, und man fragt sich, ob Attribute die richtige Lösung sind.

    
Tony Hopkinson 17.12.2012 23:12
quelle

Tags und Links