В моих программах я предпочитаю использовать строго типизированные ресурсы вместо строк.Например, у меня есть ресурс изображения с именем: Properties.Resources.Resize.
Я использую библиотеку, которая позволяет только Uri этого ресурса добавлять изображение к кнопке, например:
LargeImage = new Uri( @"/Resources/Resize.png", UriKind.Relative);
Чтобы архивировать это, используя строго типизированные ресурсы, я создал метод ниже, который использует деревья выражений:
static public Uri GetBmpResourceUri<T>(Expression<Func<T>> property,string extension)
{
MemberExpression expr = property.Body as MemberExpression;
string res = (new string[] { @"/",
expr.Member.DeclaringType.Name,
@"/",
expr.Member.Name,
extension }).ToOneString();
return new Uri(res, UriKind.Relative);
}
Я не могу найти тип растрового изображения в дереве выражений.Поэтому сейчас я должен добавить параметр расширения файла в метод.(в данном случае ".png", кто-нибудь знает решение этой проблемы?)
Теперь я могу преобразовать ресурс в Uri с помощью этого вызова:
LargeImage = GetBmpResourceUri(() => Properties.Resources.Resize,".png");
Кто-нибудь знает лучший способ достиженияэтот?Или уже есть метод .NET Framework, который делает все это?