Вы получаете награду, но по правилам мне нужно подождать 2 часа, прежде чем я смогу нажать на кнопку награды.
я есть .dll с большим количеством ResourceDictionaries.
построить действие из всех этих ResourceDictionaries установлено в«Страница».
Внутри Dll я хочу найти все эти ResourceDictionaries и перебрать их.
Если я установлю действие сборки на «EmbeddedResource», я смогу использовать Reflection:
var embeddedResources = Assembly.GetExecutingAssembly().GetManifestResourceNames().ToList();
Но GetManifestResourceNames () делаетне работа для ресурсов с действием сборки "Страница".
Как мне найти или перебрать все ресурсы, которые имеют действие "page" сборки?
Решение не должно быть отражением. Любой другой способ очень приветствуется.
Спасибо!
Решение:
Дамы и господа! Я должен объявить, что человек недели и победитель этой награды - мистер Джон Ву. Джон Ву дал правильную подсказку, и с помощью поиска я нашел это решение:
Перечисление ресурсов сборки .NET во время выполнения
Слегка измененный рабочий код выглядит так:
public static string[] GetResourceNames()
{
var asm = Assembly.GetExecutingAssembly();
string resName = asm.GetName().Name + ".g.resources";
using (var stream = asm.GetManifestResourceStream(resName))
using (var reader = new System.Resources.ResourceReader(stream))
{
return reader.Cast<DictionaryEntry>().Select(entry => (string)entry.Key).ToArray();
}
}
Если вы вызовете этот метод, вы получите все строки ресурсов с ".baml" в конце, и вы можете перебирать их.
Спасибо Джон Ву за правильный намек.