我在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文件中进行更改?如果是这样,怎么样?
答案 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);
}));