System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);
で埋め込みテキストファイルを読み取ろうとしていますが、Stream
が返されます。埋め込みリソースはテキストファイルなので、このStream
をTextReader
に変換するにはどうすればよいですか?
TextReader tr = new StreamReader(stream);
StreamReader
はTextReader
のサブクラスであるため、次のことができます。
using(var stream = System.Reflection.Assembly.GetExecutingAssembly().
GetManifestResourceStream(resource))
using(var reader = new StreamReader(stream))
{
// Use reader.
}
リソースファイルは次のように読むことができます。
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;
}
}
StreamReaderを取得する必要があります(TextReaderはStreamReaderおよびStringReaderの抽象基本クラスです)。何かのようなもの:
var stream = System.Reflection.Assembly.GetExecutingAssembly().
GetManifestResourceStream(resource);
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();