Gibt es eine Möglichkeit, zu verhindern, dass eine Methode zur Kompilierzeit aufgerufen wird?

7

Ich habe einige Klassen, die mehrere Methoden haben, die ich nicht wirklich sein will, aber sie sind einfach da der XML-Serializer sie braucht. Gibt es trotzdem Kompilierzeit Fehler / Warnungen zu generieren, wenn sie von Benutzer-Code aufgerufen werden?

Ich bin mir bewusst, dass ich IXmlSerializable implementieren kann, und mir ist auch bewusst, dass ich die Klassen in reine Datenspeicherklassen trennen kann, aber ich stelle keine Frage darüber, wie ich ein solches System entwerfen soll, ich bin einfach fragen, ob es eine Möglichkeit gibt, Kompilierzeitfehler / -warnungen zu erzeugen, wenn sie von irgendetwas aufgerufen werden, das nicht der XML-Serialisierer ist ...

    
Matt Whitfield 29.01.2010, 09:24
quelle

3 Antworten

14

Sie können

hinzufügen %Vor%

zur Methode. Die Eigenschaft IsError von ObsoleteAttribute steuert, ob ein Fehler oder eine Warnung generiert wird, und Sie können auch eine erläuternde Nachricht bereitstellen.

    
Jon Skeet 29.01.2010, 09:26
quelle
5

Sie könnten die fraglichen Mitglieder mit dem ObsoleteAttribute dekorieren. Seine Absicht ist ein bisschen anders, aber es generiert Compiler-Warnungen (oder Fehler), wenn sie vom Benutzercode aufgerufen werden.

    
Mark Seemann 29.01.2010 09:28
quelle
0

Sie können die Methoden von Benutzern intellisense mithilfe der [EditorBrowsable] ausblenden Attribut und vom Property Designer mithilfe von [Browsable] , Attribut.

Ich empfehle nicht, das [ObsoleteAttribute] zu verwenden, weil es eine andere Bedeutung als den tatsächlichen Zustand der Methode vermittelt. Verwenden Sie stattdessen einen Kommentar, der angibt, dass die Methode nicht aus Benutzercode verwendet werden sollte.

Denken Sie auch daran, dass es viele Benutzer gibt, die ihren Code mit Threatwarnungen als Fehler kompilieren, was es ihnen unmöglich macht, gültigen Code zu kompilieren Fall.

Pop Catalin 29.01.2010 09:36
quelle

Tags und Links