異なるバージョンのアセンブリを読み込む必要があります(既にアプリケーションに同じ名前のアセンブリがあります)。Reflectionを使用して同じアセンブリの異なるバージョン間でクラスオブジェクトを使用
アセンブリを読み込み、リフレクションを使用して呼び出す必要があるメソッドをロードできましたが、クラスオブジェクトを引数として渡してメソッドを呼び出すと、クラスオブジェクトを型に変換できないという例外があります引数のパラメータ。
サンプルコード -
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
いいえ、同じアプリケーションドメイン内でアセンブリを読み込めました。唯一の問題は、あるバージョンで作成されたパラメータを他のバージョンに渡そうとするときです。私は反射を使用して同じバージョンで作成されたオブジェクトでメソッドを呼び出そうとすると、それは正常に動作します.. –
可能な複製[異なるアセンブリバージョン間でクラスオブジェクトを渡す](http://stackoverflow.com/questions/8871079/passing-class -objects-across-different-assembly-versions) –