在同一程序集的不同版本之間使用類對象我有加載不同版本的程序集的要求(我已經在我的應用程序中有相同名稱的程序集)。使用反射
我能夠加載程序集並加載我需要使用反射調用的方法,但是當我通過傳遞我的類對象作爲參數來調用方法時,我得到了類對象無法轉換爲類型的異常參數參數。
示例代碼 -
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 });
這裏參數是一類我有在裝配但是由於參數類是在當前版本的組件創建的對象。當我嘗試將它傳遞給前一個程序集的方法時,我得到了一個無法轉換的異常。
我該如何做到這一點?如果我需要在此處提供更多信息,請告知我。提前致謝。
我可能是錯的,但據我所知,加載不同版本的程序集需要另一個應用程序域。否則,將使用已經加載的版本。 – Vlad 2012-01-14 17:34:40
不,我能夠在同一個應用程序域中加載程序集。唯一的問題是當我嘗試將在一個版本中創建的參數傳遞給其他人時。如果我嘗試使用反射在同一版本中創建對象的方法,它可以正常工作。 – 2012-01-14 17:42:10
[在不同的程序集版本中傳遞類對象]的可能重複(http://stackoverflow.com/questions/8871079/passing-class -objects-across-different-assembly-versions) – 2012-01-15 19:32:50