2011-06-05 12 views

Respuesta

14

Si creó un objeto en otro dominio, p. con AppDomain.CreateInstanceAndUnwrap, todo lo que necesita para llamar al objeto en otro dominio es llamar al método de un objeto.

La forma más sencilla de hacer una llamada de dominio entre aplicaciones es simplemente hacer una llamada directamente sobre ese objeto, que en realidad está expuesto desde otro dominio a través de su proxy, que existe en otro dominio.

UPD
Lamentablemente, obtener el dominio de host no es tan fácil. Debe enumerar dominios como this y encontrar entre ellos el host. Supongo que su dominio de host es aquel para el cual el método AppDomain.IsDefaultAppDomain devuelve verdadero.

+0

Completo se me olvidó ese método. En realidad, es mucho más conveniente que utilizar DoCallBack;) –

+0

¡Agradable! ¿Es posible hacer devoluciones de llamada de esta manera? – user626528

+2

@ user626528 Sí, pero no solo una devolución de llamada para un método de un objeto. Si crea un objeto en otro dominio, se invocan todos sus métodos en ese dominio. Supongo que debe crear una clase que será responsable de su devolución de llamada, luego crear una instancia de esa clase en otro dominio a través de 'AppDomain.CreateInstanceAndUnwrap' y, finalmente, llamar al método en la instancia en el otro dominio. – Centro

3

Esto generalmente se logra usando AppDomain.DoCallBack. Debe asegurarse de que, si desea pasar parámetros, necesita crear un objeto serializable, cuyo método pase al método descrito anteriormente. En el método de devolución de llamada, puede realizar otra devolución de llamada AppDomain para pasar el resultado al dominio de aplicación original.

+0

No veo, cómo pasar el parámetro/resultado con él. – user626528

+1

@ user626528 No puede pasar el parámetro u obtener el resultado directamente. Lo que puede hacer es usar [SetData] (http://msdn.microsoft.com/en-us/library/system.appdomain.setdata.aspx) y [GetData] (http://msdn.microsoft.com /en-us/library/system.appdomain.getdata.aspx) método del dominio de su aplicación para hacerlo. – Prasad

Cuestiones relacionadas