La mia applicazione carica tutti gli assembly di libreria situati nel suo percorso di esecuzione ed esegue metodi noti rispetto alle classi contenute.Carica un assembly in fase di esecuzione che fa riferimento all'assieme chiamante
Ora devo fare lo stesso con un assembly che fa riferimento all'assembly dell'applicazione. È possibile e ci sono implicazioni negative di cui dovrei essere a conoscenza?
Maestro Assemblea:
public abstract class TaskBase
{
public abstract void DoWork();
}
LoadAssemblyFromFile("Assembly0001.dll");
Assembly0001.Task1.DoWork();
Assemblee Bambino:
public sealed class Task1: MasterAssembly.TaskBase
{
public override void DoWork { /* whatever */ }
}
Lo faccio tutto il tempo senza problemi. L'unico trucco che ho incontrato (alcune volte in realtà) è la gestione della versione dell'assembly _master_. Se apporti modifiche a _master_ senza ricompilare i bambini, puoi incorrere in problemi bizzarri. –
@ M.Babcock: Grazie. Per curiosità, che tipo di problemi? Non eseguo automaticamente l'incremento delle versioni di assembly su ricompilare. Presumo che DOVREBBE bypassare qualsiasi problema tu abbia mai incontrato. I tuoi pensieri? –
Il problema più comune che ho riscontrato è che una definizione di metodo modifica la compatibilità con le versioni precedenti, anche se in altri casi ho riscontrato che il temuto "_Type_ è definito nell'eccezione _Master_ e _Master_" (dalla memoria quindi non al testo letterale, ma vicino abbastanza che tu lo riconoscerai). –