使用字符串变量调用Resource

时间:2015-11-17 09:25:01

标签: c# .net

我想通过将字符串变量传递给Properties.Resources来使用我的解决方案中的资源:

string[] documents = new string[] { "one", "two", "three"};
foreach (var document in documents)
{
   extractFile(String.Format(@"C:\temp\{0}.doc",document), properties.Resources.document);
}

private void extractFile (string destinationFile, byte[] sourceFile)
{
   File.WriteAllBytes(destinationFile, sourceFile);
}

但我不能使用字符串"文件"对于properties.Resources是这样的。

('资源'不包含'文档'的定义)

我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以按名称获取资源:

string[] documents = new string[] { "one", "two", "three"};
foreach (var document in documents)
{
    var unmanagedMemoryStream = Resources.ResourceManager.GetStream(document);

    var memoryStream = new MemoryStream();
    unmanagedMemoryStream.CopyTo(memoryStream);
    memoryStream.Position = 0;
    byte[] bytes = memoryStream.ToArray();

    extractFile(String.Format(@"C:\temp\{0}.doc", document),
                bytes);
}

ResourceManager上有几种可能更适合的方法,具体取决于资源的类型:GetStreamGetStringGetObject

答案 1 :(得分:0)

作为问题的解决方案,我压缩了所有需要的文件,并将这1个文件添加到资源中。 我将其解压缩到临时文件夹并根据需要将其解压缩到适当的位置......