Domanda

In alcune lingue è possibile sovrascrivere la parola chiave "new" per controllare il modo in cui i tipi vengono istanziati.Non puoi farlo direttamente in .NET.Tuttavia, mi chiedevo se esiste un modo, ad esempio, per gestire un'eccezione "Tipo non trovato" e risolvere manualmente un tipo prima che chiunque abbia "nuovo" creato quel tipo esploda?

Sto utilizzando un serializzatore che legge un file basato su XML e crea un'istanza dei tipi descritti al suo interno.Non ho alcun controllo sul serializzatore, ma mi piacerebbe interagire con il processo, si spera senza scrivere il mio host appdomain.

Si prega di non suggerire metodi di serializzazione alternativi.

È stato utile?

Soluzione

Puoi collegare un gestore eventi ad AppDomain.CurrentDomain.AssemblyResolve per prendere parte al processo.

Il tuo EventHandler dovrebbe restituire l'assembly responsabile del tipo passato in ResolveEventArgs.

Puoi leggere di più a riguardo su MSDN

Altri suggerimenti

C'è anche il AppDomain.TypeResolve evento che è possibile sovrascrivere.

la selezione non è interrotta discute come guardarlo in modo diverso: la colpa potrebbe essere nel tuo design, non nei tuoi strumenti.

Penso che cercare di convincere il "nuovo" a fare qualcos'altro sarà l'approccio sbagliato.

Pensa al motivo per cui l'overload degli operatori deve essere usato con cautela: è controintuitivo e difficile da eseguire il debug quando ci sono cambiamenti nascosti nella semantica del linguaggio.

Fai un passo indietro e guarda il progetto in un contesto più ampio, prova a trovare un modo più sensato per risolvere il problema.

Dovresti dare un'occhiata a Reflection e alla classe Activator.Ti permetteranno di creare oggetti da stringhe.Certo, l'oggetto deve trovarsi in uno degli assembly a cui hai accesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top