Prism Singleton设置

时间:2012-10-25 11:40:43

标签: design-patterns prism unity-container

想要实现基于模式的方法来获得设置类 可以在每个模块中使用。

我有:

  1. 程序集中的Business Objects(未引用任何内容)
  2. Common Assembly(Infrastructure)
  3. 服务模块 - 已实施的IModule(在定义阶段)
  4. A设置类:

    [Serializable]
    public class  Settings
    {
        public string DefaultStoreLocation
        { get; set; }
    ...
    }
    

    它应该在应用程序的启动中的某个地方实例化。 并且应用程序将在其生命周期中使用该单例实例。 例如: ApplicationSettings

    Settings ApplicationSettings = new Settings();
    

    我应该在哪里放置此设置文件?

    以及如何设置策略?


    怀疑:

    1. 在每个模块中注册Type时应该使用ContainerControlledlifetimeManager吗? (不知道确切的方式和时间)。
    2. 是否应将其放置在简单的组件中,或者如果将其放在模块中可能会更好。

1 个答案:

答案 0 :(得分:3)

  

希望实施基于模式的方法

不要尝试构建GOF完整的应用程序。模式是从代码中演化而来的。不要因为你觉得它很酷而强迫你的代码看起来像一个模式。

Settings听起来像是属于您的基础架构的东西。把它放在那里。可以从任何模块引用基础结构程序集。

创建并填充引导程序内的设置。您也可以在那里注册Unity。

var settings = new Settings { Foo = 1, Bar = "abc" };
container.RegisterInstance(settings);

如果您的模块具有接受类型Settings参数的构造函数,则容器将在创建模块时将设置注入模块。