2012-03-06 16 views
5

Estoy tratando de registrar un proxy entre dominios de aplicación con Autofac.Autofac y Proxy de dominio de aplicación cruzada

El tipo concreto representado por el proxy implementa la interfaz IServiceHost. Por lo tanto, el proxy también debe permitir que las llamadas al proxy que utilizan esa interfaz funcionen.

intento registrar el proxy con Autofac, haciendo:

void Initialize(IServiceHost host) 
{ 
    Host = host; 

    var builder = new ContainerBuilder(); 
    builder.RegisterInstance(host) 
     .As<IServiceHost>() 
     .SingleInstance(); 

    Scope = builder.Build(); 
} 

Sin embargo, en la llamada builder.Build(), me sale:

ArgumentException

El tipo 'System.MarshalByRefObject 'no se puede asignar al servicio' Treadmarks.Core.ServiceBase.IServiceHost '.

Sin embargo, es hostdefinitivamente un IServiceHost, ya que no es nulo y se trata de un argumento de un método inflexible.

¿Alguien puede explicar cómo puedo registrar el proxy correctamente?

+0

Entonces 'host' no implementa' IServiceHost'? En ese caso, no es un problema de Autofac. – Steven

+0

@Steven Dije específicamente que el tipo proxy * implementa * 'IServiceHost', por lo que el proxy también debe implementarlo. –

+0

Autofac comprueba si 'host' es' IServiceHost' y porque no lo es, Autofac arroja una excepción. – Steven

Respuesta

2

Debería poder utilizar una lambda con el método .Register(), en lugar de .RegisterInstance(), para solucionar esto.

+0

Esto funciona. Gracias. –

Cuestiones relacionadas