1

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

我有 :

  1. 程序集中的业务对象(不引用任何内容)
  2. 通用组件(基础设施)
  3. 服务模块 - 实现的 IModule(在定义阶段)

一个设置类:

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

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

Settings ApplicationSettings = new Settings();

我应该把这个设置文件放在哪里?

以及如何为此制定策略?


疑点:

  1. 在每个模块中注册类型时应该使用 ContainerControlledlifetimeManager 吗?(不确切知道如何以及何时)。
  2. 应该将它放在一个简单的组件中,还是将它放在一个模块中会更好。
4

1 回答 1

3

想要实现基于模式的方法

不要试图构建一个 GOF 完整的应用程序。模式是从您的代码演变而来的东西。不要仅仅因为你觉得它很酷就强迫你的代码看起来像一个模式。

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

在引导程序中创建并填充设置。您也可以在那里向 Unity 注册它们。

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

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

于 2012-10-25T12:10:45.313 回答