In C# deserialisiere ich ein Objekt eines Typs, der IDisposable mit der folgenden Anweisung implementiert (nur zur Veranschaulichung).Gibt es eine Möglichkeit, sicherzustellen, dass Dispose() bei der Deserialisierung einer IDisposable-Klasse für eine Ausnahme aufgerufen wird?
afaik, der Serializer versucht, das Objekt mit dem Standard-Ctor zu konstruieren und anschließend alle öffentlichen Eigenschaften und Felder zuzuordnen. Falls eine Ausnahme ausgelöst wird, erhalte ich das konstruierte Objekt nicht.
Also, meine Frage ist, ob es einen Weg gibt, um sicherzustellen, dass noch zugewiesene Ressourcen automatisch freigegeben werden. Ich bin mir des Dispose (bool disposing) - "Musters" bewusst, das einen expliziten Finalizer implementiert, aber ich würde mich wohler damit fühlen, alle Ressourcen explizit (d. h. deterministisch) zu befreien.
Ich denke, dass, wenn Sie diesen Rand Fall schlagen und einen absoluten Bedarf für diese Art von Feature haben, betrachten Sie ein anderes, offenes, Persistenz-Framework und passen Sie es an. In der Praxis habe ich diesen Randfall nicht getroffen. –
Im Anschluss an Sams Antwort - hey, ich habe einen, der vielleicht funktioniert ;-p (aber es ist kein xml). Es wäre nicht so schwer, alle Objekte für IDisposable zu verfolgen. Ich würde es nicht eilig haben, das hinzuzufügen, aber es könnte funktionieren. –