Ваш вопрос довольно расплывчатый ... но похоже, что вы хотите получить текстовое содержимое встроенного ресурса. Обычно вы делаете это, используя Assembly.GetManifestResourceStream
. Вы всегда можете использовать LINQ вместе с Assembly.GetManifestResourceNames()
, чтобы найти имя внедренного файла, соответствующего шаблону.
Класс ResourceManager
чаще используется для автоматического извлечения локализованных строковых ресурсов, таких как метки и сообщения об ошибках на разных языках.
обновление: более обобщенный пример:
internal static class RsrcUtil {
private static Assembly _thisAssembly;
private static Assembly thisAssembly {
get {
if (_thisAssembly == null) { _thisAssembly = typeof(RsrcUtil).Assembly; }
return _thisAssembly;
}
}
internal static string GetNlogConfig(string prefix) {
return GetResourceText(@"Some\Folder\" + prefix + ".nlog.config");
}
internal static string FindResource(string pattern) {
return thisAssembly.GetManifestResourceNames()
.FirstOrDefault(x => Regex.IsMatch(x, pattern));
}
internal static string GetResourceText(string resourceName) {
string result = string.Empty;
if (thisAssembly.GetManifestResourceInfo(resourceName) != null) {
using (Stream stream = thisAssembly.GetManifestResourceStream(resourceName)) {
result = new StreamReader(stream).ReadToEnd();
}
}
return result;
}
}
Используя пример:
string aconfig = RsrcUtil.GetNlogConfig("a");
string bconfigname = RsrcUtil.FindResource(@"b\.\w+\.config$");
string bconfig = RsrcUtil.GetResourceText(bconfigname);