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 ...
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.
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.
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.
Tags und Links c# xml-serialization