.NET 4.0 tiene una buena clase de utilidad llamada System.Lazy que hace la inicialización de objetos perezosos. Me gustaría usar esta clase para un proyecto de 3.5. Una vez vi una implementación en alguna parte de una respuesta de stackoverflow pero no puedo encontrarla más. ¿Alguien tiene una implementación alternativa de Lazy? No necesita todas las características de seguridad de subprocesos de la versión de Framework 4.0.Implementación de Lazy <T> para .NET 3.5
Actualizado:
respuestas contienen un no seguro para subprocesos y una versión segura hilo.
Tengo dos problemas con esto: en primer lugar, es preferible' bloquear' un objeto privado que 'bloquear (esto)', ya que no se puede controlar quién de lo contrario, podría bloquear tu instancia 'Lazy'. En segundo lugar, no creo que hacer que 'isValueCreated' sea un campo' volátil' sirve para ningún propósito cuando ya está usando una sección crítica (¿me equivoco? Corrígeme si estoy equivocado). – Aaronaught
Acepto que se usa volátil cuando no se usa el bloqueo. Desde MSDN: el modificador volátil generalmente se usa para un campo al que acceden varios subprocesos sin utilizar la instrucción de bloqueo para serializar el acceso. El uso del modificador volátil garantiza que un hilo recupere el valor más actualizado escrito por otro hilo. –
Modifiqué la respuesta. –