Как я могу преобразовать имя строго типизированного ресурса в Uri - PullRequest
1 голос
/ 11 августа 2010

В моих программах я предпочитаю использовать строго типизированные ресурсы вместо строк.Например, у меня есть ресурс изображения с именем: 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, который делает все это?

...