Лучший способ обмена данными между классами в C # - PullRequest
2 голосов
/ 19 сентября 2009

Я пытаюсь написать приложение для Windows. У меня есть несколько кнопок, и мне нужно изменить изображение кнопок в соответствии с состоянием переменной. Я помещаю изображения в папку «Ресурсы» и пытаюсь добраться до них так:

Изображение im = Properties.Resources.green;

Как мне получить значение im из всех классов в моем проекте, просто используя имя переменной "im"?

Ответы [ 2 ]

5 голосов
/ 19 сентября 2009

То, что вы ищете, это простая глобальная переменная, но в C # их нет. Простая альтернатива - создать класс с именем MyImages (или как угодно), а затем сделать «im» статическим открытым полем, например:

public class MyImages
{
    public static Image im = Properties.Resources.green;
}

Затем из любой точки вашего проекта вы можете получить доступ к «im» с помощью кода, подобного следующему:

Image newImage = MyImages.im;

Некоторые программисты могут в ужасе отшатнуться от чего-то подобного и настаивать на «внедрении зависимости» или собственном синглтоне, или делать приватным «im» и создавать открытое свойство get / set, или что-то подобное. Тем не менее, если вам буквально нужно получить доступ к этому изображению из любого места в вашем коде, это простой и эффективный способ сделать это, и он позволяет сохранить код для генерации изображения в одном месте.

1 голос
/ 19 сентября 2009

Вы можете попробовать использовать ResourceManager:

ResourceManager rm = new ResourceManager("items", Assembly.GetExecutingAssembly());

Для получения дополнительной информации смотрите здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...