declaración de rendimiento dentro de un bloque using () {} Se desecha antes de ejecutar

He escrito mi propia capa de datos personalizada para persistir en un archivo específico y la he abstraído con un patrón de DataContext personalizado.

Todo esto se basa en .NET 2.0 Framework (dadas las restricciones para el servidor de destino), por lo que, aunque algunas de ellas puedan parecer LINQ-a-SQL, ¡no lo es! Acabo de implementar un patrón de datos similar.

Vea el ejemplo a continuación, por ejemplo, de una situación que todavía no puedo explicar.

Para obtener todos los ejemplos de Animal, hago esto y funciona bien.

public static IEnumerable<Animal> GetAllAnimals() {
        AnimalDataContext dataContext = new AnimalDataContext();
            return dataContext.GetAllAnimals();
}

Y la implementación del método GetAllAnimals () en AnimalDataContext () a continuación

public IEnumerable<Animal> GetAllAnimals() {
        foreach (var animalName in AnimalXmlReader.GetNames())
        {
            yield return GetAnimal(animalName);
        }
}

AnimalDataContext () implementa IDisposable porque tengo un XmlTextReader ahí y quiero asegurarme de que se limpie rápidamente.

Ahora, si envuelvo la primera llamada dentro de una declaración de uso como tal

public static IEnumerable<Animal> GetAllAnimals() {
        using(AnimalDataContext dataContext = new AnimalDataContext()) {
            return dataContext.GetAllAnimals();
        }
}

y ponga un punto de interrupción en la primera línea del método AnimalDataContext.GetAllAnimals () y otro punto de interrupción en la primera línea en el método AnimalDataContext.Dispose (), y ejecute ...

el método Dispose () se llama PRIMERO para que AnimalXmlReader.GetNames () dé la excepción de "referencia de objeto no establecida a instancia de objeto" porque AnimalXmlReader se ha establecido en nulo en el Dispose () ???

¿Algunas ideas? Tengo el presentimiento de que está relacionado conrendimiento no se le permite ser llamado dentro de un bloque try-catch, queutilizando Representa efectivamente, una vez compilado ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta