Dato un caricato Assembly
c'è un modo (nel codice) per determinare quale dei 3 contesti di carico è stato caricato in (default carico, LoadFrom, o Né)?Determinare il contesto carico di un assieme
Nell'articolo Suzanne Cook's "Choosing a Binding Context", ci sono alcuni svantaggi che si verificano quando un assembly viene caricato nel LoadFrom. In particolare, la mia libreria utilizza la deserializzazione e incontra un InvalidCastException
quando viene caricato nel contesto LoadFrom.
Attualmente la mia libreria non riesce molto tardi (non riesce quando esegue il codice di deserializzazione problematico - vedere my example). Mi piacerebbe farlo fallire molto prima in queste circostanze rilevando il contesto in cui è stato caricato e generando un'eccezione se non è stato caricato nel contesto predefinito Load.
Una soluzione IMO (non molto elegante) potrebbe essere la sottoclasse di Assemblaggio, riscrivere i metodi di caricamento e aggiungere contrassegni personalizzati quando viene utilizzato uno dei metodi. – pasty
@pasty Il metodo Load utilizzato non determina necessariamente il caricamento dell'assembly in un particolare contesto. Cioè Chiamare Assembly.Load non causa sempre il caricamento dell'assembly nel contesto di caricamento predefinito. Inoltre, non ho il controllo del codice che carica l'assembly. –
Hai testato il comportamento della proprietà 'Assembly.HostContext'? È del tipo "lungo". Ho sbirciato in quella proprietà usando JustDecompile, ma non ho ancora idea di come possa il suo valore mappare a quelle 3 categorie. –