Frage

Ich habe ein bisschen über Entwurfszeitattribute für Komponenten . Dort fand ich ein Attribut namens Category . Auf dieser Seite heißt es, dass

  

Die Category-Klasse definiert die folgenden allgemeinen Kategorien:

Und dann listet eine Reihe von gemeinsamen Kategorien auf. Einer von ihnen ist zum Beispiel Aussehen . Ich dachte, brilliant! Dann kann ich [Category.Appearance] statt [Category("Appearance")] verwenden! Aber anscheinend konnte ich nicht? Versucht, es zu schreiben, aber Intellisense wäre es nicht abholen und es nicht kompilieren würde. Bin ich etwas fehlt hier? War es vielleicht nicht das diese Eigenschaften für waren? Wenn nicht, was sind für sie? Wenn sie sind, wie kann ich sie verwenden?

Und ja, ich habe die richtige using haben Zugriff auf die CategoryAttribute zu haben, denn [Category("Whatever")] funktionieren. Ich frage mich, wie ich die definierten gemeinsamen Kategorien verwenden.

War es hilfreich?

Lösung

Wie können Sie auf MSDN sehen, es ist nur eine Getter-Eigenschaft, kein Setter.

public static CategoryAttribute Appearance { get; }

In der Tat, hier ist es, was der Code wie mit Reflektor aussieht:

 public static CategoryAttribute Appearance
    {
        get
        {
            if (appearance == null)
            {
                appearance = new CategoryAttribute("Appearance");
            }
            return appearance;
        }
    }

So ist es nicht eine verdammt viel tut.

Die einzige Anwendung ich es sehen kann, ist so etwas wie folgt aus:

            foreach (CategoryAttribute attrib in prop.GetCustomAttributes(typeof(CategoryAttribute), false))
            {
                bool result = attrib.Equals(CategoryAttribute.Appearance);
            }

Grundsätzlich, wenn mithilfe von Reflektion in der Klasse suchen, können Sie leicht prüfen, welche Kategorie diese ohne gehört einen String-Vergleich zu tun. Aber man kann es nicht in der Art und Weise verwenden, die Sie leider versuchen.

Andere Tipps

Die statische Eigenschaft wird über CategoryAttribute.Appearance abgerufen. Aber das Attribut System nicht zulässt, dass Sie Code in einer Attribut-Deklaration berufen, und ich denke, das ist, warum es für Sie zusammenstellen wird nicht. Sie werden wahrscheinlich nach [Kategorie ( "Appearance")] haben zu begleichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top