803 Stimmen

Nützlichste Attribute

Ich weiß, dass Attribute äußerst nützlich sind. Es gibt einige vordefinierte Attribute wie [Browsable(false)] mit dem Sie Eigenschaften auf der Registerkarte "Eigenschaften" ausblenden können. Hier ist eine gute Frage zur Erklärung von Attributen: Was sind Attribute in .NET?

Welche vordefinierten Attribute (und deren Namespace) verwenden Sie tatsächlich in Ihren Projekten?

44voto

Lawrence Johnston Punkte 62528

Ich habe gefunden [DefaultValue] als recht nützlich erweisen.

28voto

Adrian Wible Punkte 1714

Ich würde vorschlagen [TestFixture] y [Test] - von der nEinheit Bibliothek.

Unit-Tests in Ihrem Code bieten Sicherheit beim Refactoring und eine kodifizierte Dokumentation.

26voto

[XmlIgnore]

da Sie so (in jeder xml-Serialisierung) "übergeordnete" Objekte ignorieren können, die andernfalls beim Speichern Ausnahmen verursachen würden.

25voto

Ajaxx Punkte 2480

Ich benutze gerne die [ThreadStatic] Attribut in Kombination mit Thread- und Stack-basierter Programmierung. Wenn ich z. B. einen Wert haben möchte, den ich mit dem Rest einer Aufrufsequenz teilen möchte, dies aber außerhalb des Bandes (d. h. außerhalb der Aufrufparameter) tun möchte, könnte ich etwas wie das Folgende verwenden.

class MyContextInformation : IDisposable {
    [ThreadStatic] private static MyContextInformation current;

    public static MyContextInformation Current {
        get { return current; }
    }

    private MyContextInformation previous;

    public MyContextInformation(Object myData) {
       this.myData = myData;
       previous = current;
       current = this;
    }

    public void Dispose() {
       current = previous;
    }
}

Später in meinem Code kann ich dies nutzen, um Leuten, die meinem Code nachgeschaltet sind, kontextbezogene Informationen zu liefern. Beispiel:

using(new MyContextInformation(someInfoInContext)) {
   ...
}

Das ThreadStatic-Attribut ermöglicht es mir, den Aufruf nur auf den betreffenden Thread zu beschränken und so das unangenehme Problem des Datenzugriffs über mehrere Threads hinweg zu vermeiden.

25voto

Neil Punkte 6947

Es ist nicht gut benannt, wird im Framework nicht gut unterstützt und sollte keinen Parameter erfordern, aber dieses Attribut ist eine nützliche Markierung für unveränderliche Klassen:

[ImmutableObject(true)]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X