Tôi có yêu cầu tải lắp ráp phiên bản khác (tôi đã có lắp ráp cùng tên trong ứng dụng của mình).Sử dụng đối tượng lớp trên các phiên bản khác nhau của cùng một assembly bằng cách sử dụng Reflection
Tôi có thể tải lắp ráp và tải phương pháp tôi cần gọi bằng cách sử dụng phản chiếu nhưng khi tôi đi gọi phương thức bằng cách chuyển đối tượng lớp của tôi làm đối số, tôi có ngoại lệ là đối tượng lớp không thể chuyển đổi thành loại tham số đối số.
Sample Code -
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 });
Đây tham số là một đối tượng của một lớp mà tôi có trong lắp ráp nhưng vì lớp tham số được tạo ra trong lắp ráp các phiên bản hiện tại. Và khi tôi cố gắng vượt qua nó với phương pháp lắp ráp trước đó, tôi có một ngoại lệ mà nó không thể được chuyển đổi.
Làm cách nào tôi có thể đạt được điều này? Hãy cho tôi biết trong trường hợp nếu tôi cần phải đưa vào một số thông tin thêm ở đây. Cảm ơn trước.
Tôi có thể sai, nhưng theo như tôi hiểu, việc tải phiên bản khác của hội đồng yêu cầu miền ứng dụng khác. Nếu không, phiên bản đã tải sẽ được sử dụng. – Vlad
Không, tôi có thể tải lắp ráp trong cùng một miền ứng dụng. Vấn đề duy nhất xuất hiện khi tôi cố gắng chuyển tham số được tạo trong phiên bản này sang phiên bản khác. Nếu tôi cố gắng gọi phương thức với đối tượng được tạo trong cùng một phiên bản sử dụng phản chiếu, nó hoạt động tốt .. –
có thể trùng lặp của [Truyền đối tượng lớp trên các phiên bản lắp ráp khác nhau] (http://stackoverflow.com/questions/8871079/passing-class -objects-across-khác-lắp ráp phiên bản) –