[C#] So erstellen Sie doppelte zulässige Attribute


Answers

AttributUsageAttribute ;-p

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class MyAttribute : Attribute
{}

Beachten Sie jedoch, dass bei Verwendung von ComponentModel ( TypeDescriptor ) nur eine Attributinstanz (pro Attributtyp) pro Mitglied unterstützt wird. rohe Reflexion unterstützt eine beliebige Anzahl ...

Question

Ich verwende ein benutzerdefiniertes Attribut, das von einer Attributklasse geerbt wurde. Ich benutze es so:

    [MyCustomAttribute("CONTROL")]
    [MyCustomAttribute("ALT")]
    [MyCustomAttribute("SHIFT")]
    [MyCustomAttribute("D")]
    public void setColor()
{

}

Aber der "Duplicate 'MyCustomAttribute' Attribut" Fehler wird angezeigt.
Wie kann ich ein doppelt zulässiges Attribut erstellen?




Als Alternative denken Sie darüber nach, Ihr Attribut neu zu gestalten, um eine Sequenz zu ermöglichen.

[MyCustomAttribute(Sequence="CONTROL,ALT,SHIFT,D")]

oder

[MyCustomAttribute("CONTROL-ALT-SHIFT-D")]

Parsen Sie dann die Werte, um Ihr Attribut zu konfigurieren.

Ein Beispiel hierfür finden Sie im AuthorizeAttribute im ASP.NET MVC-Quellcode unter www.codeplex.com/aspnet .




Nachdem Sie das AttributUsage hinzugefügt haben, stellen Sie sicher, dass Sie diese Eigenschaft zu Ihrer Attributklasse hinzufügen

public override object TypeId
{
  get
  {
    return this;
  }
}