que han estado tratando de obtener el código siguiente para trabajar (todo lo que se define en el mismo conjunto):¿Cómo paso referencias como parámetros de método en AppDomains?
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."
}
}
}
Lo que estoy tratando de hacer es pasar una referencia de una 'A' instancia creada en el primer AppDomain para el dominio secundario y hacer que el dominio secundario ejecute un método en el primer dominio. En algún punto del código 'B', voy a llamar a 'remoteObj.GetSomeData()'. Esto debe hacerse porque el método 'byte []' de 'GetSomeData' debe 'calcularse' en el primer dominio de aplicación. ¿Qué debo hacer para evitar la excepción o qué puedo hacer para lograr el mismo resultado?
Tu código funciona para mí. –
+1 Para mí también. ¿Qué versiones de CLR, Visual Studio (si hay), C#, etc.? ¿Alguna otra circunstancia? –
extraño, voy a volver a comprobar –