Могу ли я связать изображение с классом и загрузить это изображение, не создавая экземпляр класса? - PullRequest
0 голосов
/ 10 марта 2011

Давным-давно, первый раз здесь.

Мой вопрос:

Используя C # 2.0, есть ли способ связать изображение с таким классом / типом, чтобы я неВам нужно создать экземпляр класса только для того, чтобы получить объект изображения из этого класса?

Что я пытаюсь сделать, это отсканировать все библиотеки DLL в моем приложении и создать список классов и соответствующих атрибутов.У меня это отлично работает, и теперь я хочу как-то связать изображение с каждым классом, чтобы я мог отобразить список классов и иметь уникальное изображение для каждого.

Я попытался выполнить поиск SO и Интернетаза ответ, но не могу найти ничего определенного.Любая помощь будет принята с благодарностью.

Спасибо,

Кайл

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Разобрался, как это сделать, используя идеи здесь и там.

  1. Пометить изображение как EmbeddedResource.

  2. Создать атрибут для указания имени изображения.

  3. После прочтения атрибута имени изображения используйте следующее, чтобы найти ресурс изображения внутри сборки, в которой был объявлен класс:

    string[] all = info.Type.Assembly.GetManifestResourceNames();
    
    foreach (string resourceStr in all)
    {
      if (!String.IsNullOrEmpty(resourceStr) && resourceStr.EndsWith(String.Format(".{0}", iconName), true, CultureInfo.CurrentCulture))
      {
        Stream file = info.Type.Assembly.GetManifestResourceStream(resourceStr);
    
        if (file != null)
        {
          info.Icon = Image.FromStream(file);
        }
      }
    }
    
0 голосов
/ 10 марта 2011

Вы можете создать ImageAttribute.

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
class ImageAttribute : Attribute
{
    private string ImagePath { get; set; } 

    public ImageAttribute(string imagePath)
    {
        ImagePath = imagePath;
    }

    public Bitmap Image
    {
        get { return new Bitmap(ImagePath); }
    }
}

Или идентификатор базы данных, просто способ идентифицировать изображение.

...