Wie übergebe ich Referenzen als Methodenparameter über AppDomains?

Ich habe versucht, den folgenden Code zum Laufen zu bringen (alles ist in derselben Assembly definiert):

namespace SomeApp{

public class A : MarshalByRefObject
{
   public byte[] GetSomeData() { // }
}

public class B : MarshalByRefObject
{
   private A remoteObj;

   public void SetA(A remoteObj)
   {
      this.remoteObj = remoteObj;
   }
}

public class C
{
   A someA = new A();
   public void Init()
   {
       AppDomain domain = AppDomain.CreateDomain("ChildDomain");
       string currentAssemblyPath = Assembly.GetExecutingAssembly().Location;
       B remoteB = domain.domain.CreateInstanceFromAndUnwrap(currentAssemblyPath,"SomeApp.B") as B;
       remoteB.SetA(someA); // this throws an ArgumentException "Object type cannot be converted to target type."
   }
}

}

Ich versuche, einen Verweis auf eine 'A'-Instanz, die in der ersten AppDomain erstellt wurde, an die untergeordnete Domäne zu übergeben und die untergeordnete Domäne eine Methode in der ersten Domäne ausführen zu lassen. Irgendwann im 'B'-Code werde ich' remoteObj.GetSomeData () 'aufrufen. Dies muss erfolgen, da das 'Byte []' der 'GetSomeData'-Methode in der ersten Anwendungsdomäne' berechnet 'werden muss. Was kann ich tun, um die Ausnahme zu vermeiden, oder was kann ich tun, um das gleiche Ergebnis zu erzielen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage