在同一程序集的不同版本之间使用类对象我有加载不同版本的程序集的要求(我已经在我的应用程序中有相同名称的程序集)。使用反射
我能够加载程序集并加载我需要使用反射调用的方法,但是当我通过传递我的类对象作为参数来调用方法时,我得到了类对象无法转换为类型的异常参数参数。
示例代码 -
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