1

AppDomain.CreateInstance("Assembly name", Type name) を使用し、クラスが MarshalByRefObject から継承した場合、内部的にはどうなりますか? TransparetnProxy を作成していますか?

コード:

class Greet : MarshalByRefObejct
{
  ...
}

class test
{
 public static void Main(string[] args)
 {
   AppDomain ad = AppDomain.CreateDomain("Second");
   ObjectHandle hObj = ad.CreateInstance("Test", args[0]);
  ....
 }
}

args[0] を渡す = あいさつ

4

3 に答える 3

3

はい、オブジェクト ハンドルをアンラップすることで得られる透過プロキシが作成されます。

ドキュメントと例は、一般的なObjectHandle.UnwrapMarshalByRefObjectドキュメントと同様に非常に有益です。

于 2009-03-20T14:16:49.670 に答える
1

AppDomain.CoCreateInstance()アセンブリとその型名という 2 つの引数を取ります。

また、アセンブリで指定された型のインスタンスを作成するために使用される を返し、インスタンス化されたときと必要なときに real に戻るObjectHandleためのハンドルも提供します。wrap(serialized)unwrap(deserialized)Proxy

于 2012-04-27T13:46:56.597 に答える
1

はい。

CreateInstanceAndUnwrapも参照してください。Main クラスと Greet クラスのコードが共通のインターフェイスを共有する場合、hObj をインターフェイスにキャストし、TransparentProxy を使用してメソッドを呼び出すことができます。

于 2009-03-20T14:17:56.407 に答える