在C#中在类之间共享数据的最佳方式

时间:2009-09-19 00:48:45

标签: c# resources

我正在尝试编写一个Windows窗体应用程序。我有一些按钮,我需要根据变量的状态更改按钮的图像。我把图像放在Resources文件夹中,我试图像这样到达它们:

Image im = Properties.Resources.green;

如何使用“im”变量名称从项目中的所有类中获取此 im 值?

2 个答案:

答案 0 :(得分:5)

您正在寻找的是一个简单的全局变量,但它们没有C#中的那些变量。一个简单的替代方法是创建一个名为MyImages(或其他)的类,然后将“im”设为静态公共字段,如下所示:

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

然后,从项目的任何地方,您都可以使用以下代码访问“im”:

Image newImage = MyImages.im;

有些程序员可能会从这样的事情中惊慌失措,并坚持“依赖注入”或正确的单身人士,或使“im”私有并创建一个获取/设置公共财产,或类似的东西。但是,如果您确实需要从代码中的任何位置访问此Image,这是一种简单有效的方法,它实现了保持代码在一个位置生成Image的目标。

答案 1 :(得分:1)

您可以尝试使用ResourceManager:

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

有关详细信息,请查看here