2012-06-25 13 views
6

Voy a rastrear cada acción que ocurre en los servicios administrados por Unity Container como registros en el sistema de archivos. Supongo que podría definir una interfaz llamada IService y todas las demás interfaces o implementación deberían heredar de él. Por otro lado, me gustaría desarrollar un comportamiento de interceptación personalizado o un controlador de llamadas para guardar los registros en archivos.¿Cómo configurar un interceptor de registro para todos los tipos registrados en Unity?

Por desgracia, me encontré con que no funciona para mí mediante el uso de estos códigos

IUnityContainer unity = new UnityContainer(); 

//Interception 
unity.AddNewExtension<Interception>(); 
Interception interception = unity.Configure<Interception>(); 
unity.RegisterType<IService>(
    new DefaultInterceptor(new InterfaceInterceptor()), 
    new DefaultInterceptionBehavior(new LoggingBehavior())); 

string[] configFiles = Directory.GetFiles(".", "*.config"); 
foreach (string configFile in configFiles) 
{ 
    var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; 
    System.Configuration.Configuration configuration = 
     ConfigurationManager.OpenMappedExeConfiguration(fileMap, 
     ConfigurationUserLevel.None); 
    var unitySection = (UnityConfigurationSection) 
     configuration.GetSection("unity"); 
    unity = unitySection.Configure(unity); 
} 

IGateway imapGW = unity.Resolve<IGateway>("ImapGateway"); 

¿Hay cualquier malentendido para mí utilizar interceptor en la Unidad? ¿Cómo puedo lidiar con este problema para registrar todo automáticamente sin configurar el interceptor para cada servicio?

Respuesta

Cuestiones relacionadas