2

新しいAppDomainを作成したいと思います。私はこれをやってみます:アプリケーションドメインを作成し、アセンブリをロードします

しかし、自分のドメインにどのタイプを指定するのかわかりません...

var domain = AppDomain.CreateDomain("NewAppDomain");
var path = @"C:\work\SomeAssembly.dll";
var t = typeof(SomeType);
var instance = (SomeType)domain.CreateInstanceFromAndUnwrap(path, t.FullName);

私が本当にやりたいのはcreate、アセンブリをロードしてその参照を見つける一時的なAppDomainに対してです。次に、別のAppDomainを作成し、参照されているすべてのアセンブリと一時的なAppDomainにあるアセンブリをロードします。最後にunload、一時的なAppDomainを作成し、別のアセンブリを使用するときにアンロードできる他のAppDomainから作業します。

私の主な質問は、上記のコードの「SomeType」とは何ですか?...私はそこに何を置くと思いますか?

ありがとう!

4

1 に答える 1

3

問題のタイプは、定義したプロキシクラスです。MarshalByRefObjectから継承する必要があり、個別のAppDomainと現在のAppDomainの両方がそれを見つけることができる必要があります。

CreateInstanceFromAndUnwrap別のAppDomainにそのタイプのインスタンスを作成し、タイプとしてキャストできる現在のAppDomainに__TransparentProxyを提供します。プロキシオブジェクトのメソッド呼び出しは、タイプの他のAppDomainで呼び出されます。

ただし、AppDomainのロード/アンロードは、特にパフォーマンスの点で非常にコストがかかることを覚えておいてください。アセンブリからリソースを取得しようとする特定のシナリオでは、おそらくより良い方法があるように思われます。代わりに、リソースファイルに適切にアクセスする方法について別の質問をすることをお勧めします。

于 2012-08-07T19:52:24.813 に答える