Estoy escribiendo un servicio WCF en C#. Inicialmente, mi implementación tenía un constructor estático para realizar una inicialización única, pero parte de la inicialización que se realiza podría fallar (temporalmente).Inicialización de tipo (constructor estático) manejo de excepciones
Parece que los constructores estáticos solo se invocan una vez, incluso si el primer intento (fallido) arrojó una excepción. Cualquier intento posterior de instanciar mi clase fallará inmediatamente con un TypeInitializationException
sin que el código se esté ejecutando realmente.
La especificación de lenguaje C# indica que un constructor estático se llama como mucho una vez, pero básicamente esto hace una excepción allí un error que no se puede recuperar, incluso si lo atrapa?
¿Falta algo aquí? Supongo que debería mover cualquier cosa remotamente peligrosa al constructor de la instancia del servicio y verificar manualmente si la inicialización de la clase ya se completó exitosamente antes o no.
Eso es en realidad lo que tengo ahora, excepto que utilizo un bloqueo verificado doble y mi' _inicializado' bool es 'volátil' (no debería ser necesario sin doble bloqueo comprobado) – Thorarin