全球项目静态变量

时间:2013-05-02 22:17:28

标签: c# windows static-libraries system.drawing device-context

我有三个用于绘制不同类型位图的Windows库。他们共同的共同点是:字体,颜色和笔。

我想设计一个我可以拥有所有标准字体,颜色和笔的库,这样如果我进行字体更改,它将在所有其他库中全局更改。

例如:我有三个绘制到位图的库,它们都使用相同的设置:

      internal static readonly Font ELEVATION_FONT = new Font("Segoe UI Semibold", 7.9f),
                                  DETAIL_BOX_FONT = new Font(FontFamily.GenericSerif, 8f, FontStyle.Regular);//"Palatino Linotype"

    internal static readonly Color BACK_COLOR_SCREEN = Color.Black,
                                   LINE_COLOR_SCREEN = Color.FromArgb(161, 161, 161),
                                   BACK_COLOR = Color.White,
                                   LINE_COLOR = Color.Black;

我想创建一个名为MySoluctionNameDrawing的库以及使用这些设置绘制到位图的所有其他库,他们将使用MySoluctionNameDrawing中的库。

这也是为了可维护性。

MySoluctionName只是我的解决方案的名称,但我确信你会为演示目的而得到我的观点。

任何人都有任何想法是最简单,最干净的方法,将所有绘图相关工具放在一个库中,并从其他库中访问它们而不会弄得一团糟?


以下是我的想法。

绘制DLL

namespace AlumCloudDrawing
    {

        public static class DrawingOptions
        {
            public static readonly Font ELEVATION_FONT = new Font("Segoe UI Semibold", 7.9f),
                                            DETAIL_BOX_FONT = new Font(FontFamily.GenericSerif, 8f, FontStyle.Regular);//"Palatino Linotype"      


            public static readonly Color BACK_COLOR_SCREEN = Color.Black,
                                                 LINE_COLOR_SCREEN = Color.FromArgb(161, 161, 161),
                                                 BACK_COLOR = Color.White,
                                                 LINE_COLOR = Color.Black;
        }
    }

来自依赖于绘图dll库的库的用法参考。

 internal static readonly Font ELEVATION_FONT = AlumCloudDrawing.DrawingOptions.ELEVATION_FONT,
                                  DETAIL_BOX_FONT = AlumCloudDrawing.DrawingOptions.DETAIL_BOX_FONT;

    internal static readonly Color BACK_COLOR_SCREEN = AlumCloudDrawing.DrawingOptions.BACK_COLOR_SCREEN,
                                   LINE_COLOR_SCREEN = AlumCloudDrawing.DrawingOptions.LINE_COLOR_SCREEN,
                                   BACK_COLOR = AlumCloudDrawing.DrawingOptions.BACK_COLOR,
                                   LINE_COLOR = AlumCloudDrawing.DrawingOptions.LINE_COLOR;

1 个答案:

答案 0 :(得分:1)

我通常遵循这种模式

/src
    FooApp.sln                       -- solution file
    /apps                            -- folder for apps
        /FooApp.Core                 -- core project
        /FooApp.Drawing1             -- project that references core
        /FooApp.Drawing2             -- project that references core    
    /tests                           -- tests
        /FooApp.Core.Test
        /FooApp.Drawing1.Test
        /FooApp.Drawing2.Test