Как сделать пакетный импорт для нескольких файлов в папке ресурсов с C #? - PullRequest
1 голос
/ 07 октября 2011

У меня есть несколько растровых изображений в подпапке папки ресурсов (скажем, Resource / Bitmap), и я хочу загрузить их в растровое изображение [] за один раз, то есть

BitmapSource[] bitmaps=
    TheMethodIWantToImplement(
    new Uri("pack://application:,,,/MyAssembly;component/Resources/Bitmap", 
    UriKind.Absolute));

НоЯ обнаружил, что Directory.GetFiles не принимает аргумент Uri.И что же мне делать?Спасибо.

1 Ответ

0 голосов
/ 11 октября 2011

Спасибо, @Teudimundo.Я изменил фрагмент этой ссылки следующим образом:

var asm = Assembly.GetEntryAssembly();
string resName = asm.GetName().Name + ".g.resources";
using (var stream = asm.GetManifestResourceStream(resName))
using (var reader = new System.Resources.ResourceReader(stream))
{
    var paths = from entry in reader.Cast<DictionaryEntry>()
                where ((string)entry.Key).Contains("sub-folder-name")
                select entry.Key;
    if (paths.Any())
    {
        foreach (string path in paths)
        {
            Uri uri = new Uri(String.Format(
                      "pack://application:,,,/{0};component{1}", asm.GetName(), path)
                      , UriKind.Absolute);
            //use the uri for the rest
        }
    }
}

Но я все еще хочу использовать поток ресурсов напрямую (его можно получить с помощью select entry.Value в приведенном выше выражении LINQ), который является экземпляром UnmanagedMemoryStream.Мне нужно MemoryStream, чтобы построить мой объект, но я не нашел элегантных методов для конвертации.

...