アンロードできる別の AppDomain 内のコンポーネント (サード パーティの dll に基づく) を分離する方法を探しています。私の計画は、コンポーネントとの通信にCreateInstanceAndUnwrap
およびMarshalByRefObject
ベースのオブジェクトを使用することでした。
問題は、メイン アセンブリから派生したオブジェクトを使用するにMarshalByRefObject
は、コンポーネント dll を参照する必要があり、それを回避しようとしていることです。インターフェイスを介して分離できると思いました
class MyObject: MarshalByRefObject, IMyObject
{
}
CreateInstanceAndUnwrap
しかし、から返されたオブジェクトをキャストすることはできませんIMyObject
(実際にはプロキシであり、実際のオブジェクトではないと思いますか?)。
私は何かを見逃していますか、それともこれを行うことができず、唯一の答えは WCF ですか?
更新: 私が実際に抱えていた問題は、IMyObject が 2 回定義されたことでした。メイン アセンブリとコンポーネント アセンブリにファイルが含まれていました。このようにして、「透過プロキシをタイプにキャストできません」という例外が発生します。両方のアセンブリから参照するインターフェイス/クラス定義を 1 つだけ使用している場合、問題なく動作します (Will が提案したように、上記で説明したように)。