Frage

In einigen Sprachen können Sie das „neue“ Schlüsselwort außer Kraft zu steuern, wie Typen instanziiert werden. Sie können dies nicht direkt in .NET. Aber ich frage mich, ob es einen Weg gibt, sagen wir, behandeln einen „Typ nicht gefunden“ Ausnahme und manuell eine Art zu lösen, bevor wer auch immer „neu“ ed up diese Art sprengt?

Ich bin mit einem Serializer, die in einer XML-basierten Datei liest und instanziiert Typen innerhalb beschrieben. Ich habe keine Kontrolle über den Serializer, aber ich mag mit dem Prozess zu interagieren, hoffentlich ohne mein eigenes Appdomain Host zu schreiben.

Bitte nicht schlagen alternative Serialisierungsmethoden.

War es hilfreich?

Lösung

Sie können einen Ereignishandler AppDomain.CurrentDomain.AssemblyResolve befestigen an dem Prozess zu nehmen.

Ihre Eventhandler sollten die Anordnung zurück, die für den Typen in der ResolveEventArgs weitergegeben verantwortlich ist.

Sie können weitere Informationen unter MSDN

Andere Tipps

Es gibt auch die AppDomain.TypeResolve Fall, dass Sie können außer Kraft setzen.

nicht gebrochen erläutert, wie es betrachten anders -. die Fehler in Ihrem Design sein können, nicht Ihre Werkzeugen

Ich denke, dass „neue“ etwas anderes zu tun sein wird, der falsche Ansatz.

zu bekommen versuchen,

Denken Sie an, warum hat Betreiber Überlastung mit Vorsicht verwendet werden. - es ist kontraintuitiv und schwer zu debuggen, wenn es versteckt Änderungen der Sprachsemantik

Schritt zurück und in einem größeren Zusammenhang auf das Design aussehen, versuchen, einen sinnvollen Weg, um das Problem zu lösen.

Sie sollten Reflexion und die Activator-Klasse angeboten werden. Sie ermöglicht es Ihnen, Objekte aus Strings zu erstellen. Zugegeben, das Objekt in einer der Baugruppen, die Sie Zugriff haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top