如何使用Unity填充设置?

时间:2012-02-17 09:14:17

标签: c# web-config unity-container ioc-container structuremap

我在web.config文件中有以下appSettings键值:

<add key="SomeSettings.Received" value="Mottatt"/>    
<add key="SomeSettings.Processing" value="Under behandling"/>
<add key="SomeSettings.Finished" value="Ferdig behandlet"/>

我有以下课程:

public class SomeSettings : IConfigurationSettings
{
    public string Received { get; set; }
    public string Processing { get; set; }
    public string Finished { get; set; }
}

在StructureMap中,以下内容将填充SomeSettings类:

ForConcreteType<SomeSettings>().Configure
            .EnrichWith(
                (session, original) =>
                session.GetInstance<ISettingsProvider>().PopulateSettings(original)
            );

我是否可以使用Unity执行类似操作而无需在web.config文件中进行更改?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

简而言之:Unity没有这样的功能。 但TecX project on codeplex包含Unity的一些增强功能,允许您执行相同的操作。

var container = new UnityContainer();
container.AddNewExtension<EnrichmentExtension>();
container.RegisterType<SomeSettings>(new Enrichment<SomeSettings>((original, ctx) =>
  {
    ctx.NewBuildUp<ISettingsProvider>().PopulateSettings(original);
  }));