Разработка приложений, глобальная коллекция изображений - PullRequest
0 голосов
/ 09 февраля 2012

У нас есть приложение, n-уровневое, структурированное, но я бы не сказал, что оно n-уровневое.Самая верхняя форма Form / AKA MainForm / подключается к БД и получает список доступных модулей, в соответствии с которыми она начинает загружать разные модули.Каждый модуль представляет собой отдельный проект, имеющий 1 класс верхнего уровня, который является производным от абстрактного класса, из которого происходят все модули.

Итак, пока у нас все работает просто отлично, передавая строки соединений, диалогимежду модулями и основным приложением.

Следующим шагом является реализация глобальной библиотеки значков, которую должен использовать каждый модуль, суть в том, что каждый модуль должен иметь возможность загружать в него свои собственные изображения.

Я имею в виду глобальный статический класс, который возвращает текущий запущенный экземпляр класса ImageList.Я не знаю, с чего начать, поэтому кто-нибудь может привести пример глобального класса, который можно использовать статически, не объявляя и не передавая его?возможно ли это вообще?

РЕДАКТИРОВАТЬ:
попытка перефразирования: в идеале глобальный ресурс, в который каждый отдельный модуль может вставлять ресурсы, из которых каждый модуль может получитьизображения, если они существуют.Я даже не знаю, с чего начать и что искать.

РЕДАКТИРОВАТЬ 2:

только что проверил:было 3 проекта: 1 основной, 1 ребенок, 1 промежуточныйосновные ссылки междудочерние ссылки между ними

1 main запускается и вызывает статические методы при "inbetween" загрузке некоторых строк в него.Используя рефлексию «main», экземпляр загружает child.dll и создает экземпляр объекта, используя рефлексию, затем вызывает метод, определенный в интерфейсе «inbetween» для дочернего объекта obj, который, в свою очередь, вызывает статический метод для «inbetween», после которогоmsgstr "печатать все строки в статическом" промежуточном звене ".И это работает!Я был как WTF?Я думаю, Reflection сочетает в себе 2 "промежуточных звена"

Ответы [ 3 ]

0 голосов
/ 09 февраля 2012

Итак, вы имеете в виду, что вам нужен метод "static static" (ведет себя как статический поток, но нацелен на модуль)?

0 голосов
/ 09 февраля 2012

Один простой способ - создать общую библиотеку, на которую будет ссылаться каждый модуль. Таким образом, каждый модуль будет знать о существовании класса, предлагаемого разделяемой библиотекой. Затем вы можете иметь класс в этой общей библиотеке для управления вашими изображениями.

Чтобы сделать его более элегантным, я бы посмотрел на систему Dependency Injection, такую ​​как Unity. Совместно используемая библиотека (инфраструктурная библиотека) содержит определение интерфейса для управления изображениями. Затем есть модуль, который реализует этот конкретный интерфейс, а затем зарегистрируйте этот реализатор в контейнере единицы. Таким образом, каждый модуль прошел бы через контейнер для единства, чтобы РАЗРЕШИТЬ Интерфейс.

таким образом, каждый модуль не тесно связан с модулем, который реализует интерфейс, а только с общей библиотекой, которая содержит только определение интерфейса.

0 голосов
/ 09 февраля 2012
public static class Foo
{
    public static int Bar()
    {
        return 1;
    }

    public static void AddImage(Image img, String key){...}
    public static Image GetImage(String key){...}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...