Ich möchte das Erstellen von Objekten mit dem Standardkonstruktor einschränken. Weil ich ein Design wie unten habe:
%Vor% Das ist in Ordnung. Aber wenn ich BaseClass zu Serializable mache, wird dieser Fehler erzeugt:
Unhandled Exception: System.InvalidOperationException: ConsoleApplication1.BaseC
lass cannot be serialized because it does not have a parameterless constructor.
Jetzt ist mein Design kollabiert, weil ich Username
, Password
-Parameter haben muss, aber der Standardkonstruktor ruiniert mein Design ....
Was soll ich tun?
Die Deserialisierung Ihrer Instanzen erfordert einen parameterlosen Konstruktor, um die Instanz zu erstellen, aber Sie müssen keinen öffentlichen Konstruktor implementieren. Es reicht, einen private
oder internal
-Konstruktor zu haben, solange er keine Parameter benötigt .
Übrigens können Sie auch den DataContractSerializer verwenden , die keinen parameterlosen Konstruktor benötigt und auch XML erzeugt; es ist immer meine erste Wahl: -)
Haben Sie versucht, einen privaten parameterlosen Konstruktor zu erstellen?
Wenn es ein öffentliches Bedürfnis gibt, können Sie immer sagen, dass es nicht verwendet werden sollte (nicht die beste Lösung)
Sie müssen auch Eigenschaften in Ihrer Serializable-Klasse erstellen. Variablen werden nicht berücksichtigt und während des Serialisierungs- / Deseralisierungsprozesses nicht gelesen oder geschrieben.
Tags und Links c# design default-constructor