【问题标题】:Global Project Static Variables全局项目静态变量
【发布时间】:2013-04-27 06:02:03
【问题描述】:

我有三个用于绘制不同类型位图的 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;

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 所以,我想我只是梦想我可以在一个库中拥有静态常量并从另一个库中引用该库并使用静态常量,就好像它们是本地的一样,而不必做 Color color = MyConstants.BACK_COLOR
    • 为什么不呢?您只需要确保静态变量可见,即更改 internal => public
    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 2022-01-28
    • 1970-01-01
    • 2018-04-28
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多