Estoy tratando de leer un archivo de texto incrustado con System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);pero me da un Stream. El recurso incrustado es un archivo de texto, entonces, ¿cómo puedo convertirlo Streamen un TextReader?
                81
            
  
              
        
A
StreamReaderes una subclase deTextReader, por lo que podrá hacer:using(var stream = System.Reflection.Assembly.GetExecutingAssembly(). GetManifestResourceStream(resource)) using(var reader = new StreamReader(stream)) { // Use reader. }fuente
Puede leer su archivo de recursos así:
Assembly resourceAssembly = Assembly.LoadFrom(resourceFile.FullName); string[] manifests = resourceAssembly.GetManifestResourceNames(); using (ResourceReader reader = new ResourceReader( resourceAssembly.GetManifestResourceStream(manifests[0]))) { foreach (IDictionaryEnumerator dict in reader) { string key = dict.Key as string; object val = dict.Value; } }fuente
foreachbucle es mejor que un enumerador explícito.Necesita obtener un StreamReader de él (TextReader es una clase base abstracta de StreamReader y StringReader). Algo como:
var stream = System.Reflection.Assembly.GetExecutingAssembly(). GetManifestResourceStream(resource); var reader = new StreamReader(stream); var text = reader.ReadToEnd();fuente