Ho un requisito per il caricamento di assembly di versioni diverse (ho già l'assembly con lo stesso nome nella mia applicazione).Utilizzare l'oggetto classe tra diverse versioni dello stesso assembly utilizzando Reflection
Sono stato in grado di caricare l'assembly e caricare il metodo che ho bisogno di invocare usando reflection ma quando vado a invocare il metodo passando il mio oggetto di classe come argomento, ho ottenuto l'eccezione che l'oggetto di classe non può essere convertito nel tipo del parametro argomento.
Codice di esempio -
Assembly myAssembly = Assembly.LoadFrom("Assembly Path for assembly with different version");
object classObject = myAssembly.CreateInstance("ClassName");
Type classType = myAssembly.GetType("ClassName");
MethodInfo myMethod = classType.GetMethod("MyMethod", BindingFlags.Instance);
// Creating an object of class in the latest assembly and need to pass this
// to method in assembly with different version.
ClassInBothVesions parameter = new ClassInBothVesions();
myMethod.Invoke(classObject, new object[] { parameter });
Qui parametro è un oggetto di una classe che ho in assemblea ma dato classe parametro viene creato nel montaggio della versione attuale. E quando provo a passarlo al metodo dell'assemblaggio precedente, ho ottenuto un'eccezione che non può essere convertito.
Come posso ottenere questo? Fatemi sapere se ho bisogno di ulteriori informazioni qui. Grazie in anticipo.
Potrei sbagliarmi, ma per quanto ho capito, il caricamento di una versione diversa di un assembly richiede un altro dominio dell'app. Altrimenti, verrà utilizzata la versione già caricata. – Vlad
No, sono riuscito a caricare l'assembly nello stesso dominio dell'app. L'unico problema si presenta quando provo a passare il parametro creato in una versione ad un'altra. Se provo a invocare il metodo con oggetto creato nella stessa versione utilizzando il reflection, funziona bene .. –
possibile duplicato di [Passare oggetti di classe attraverso diverse versioni di assembly] (http://stackoverflow.com/questions/8871079/passing-class -objects-across-different-assembly-versions) –