unity - 在我的Unity解决方案中,如何替换过时的Microsoft.Practices.Unity.Configuration.ContainerElement.Configure 方法?

  显示原文与译文双语对照的内容
0 0

我有一个运行和运行完美的统一应用程序,但目前我们正在进行代码清理。

在下面的代码中,由于过时的Microsoft.Practices.Unity.Configuration.ContainerElement.Configure 方法,我得到了一条警告:


var map = new ExeConfigurationFileMap { ExeConfigFilename = GetConfigFolderForFile("unity.config") };
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
var section = (UnityConfigurationSection)config.GetSection(SectionName);

if (section!= null)
{

 var container = new UnityContainer();

 foreach (ContainerElement containerElement in section.Containers)
 {
 containerElement.Configure(container);
 }

 Container = container;//Set the main container
}

我想用 UnityConfigurationSection.Configure 方法替换它,但是看不到它们是等价于对象层次结构的不同级别。

我尝试过:


var map = new ExeConfigurationFileMap { ExeConfigFilename = GetConfigFolderForFile("unity.config") };
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
var section = (UnityConfigurationSection)config.GetSection(SectionName);

if (section!= null)
{
 IUnityContainer container = new UnityContainer();

 container = section.Configure(container);

 Container = container;//Set the main container
}

但这是由空引用引起的。

如何更新代码以消除已经过时方法的使用?

时间: 原作者:

0 0

我已经成功地完成了。 密钥是使用配置方法的重载,该方法采用容器名称来配置每个容器元素:


foreach (ContainerElement containerElement in section.Containers)
{
 container = section.Configure(container, containerElement.Name);
}

到目前为止,看起来好像它正在做与过时的Container.Configure 方法一样的操作- 一切都在预期的工作中。

原作者:
0 0

如果配置中的节没有名称,则它将它的作为默认值,并且不需要指定名称:


<containers>
 <container>
 <types>
 <type type="IObject" mapTo="Object"/>
 </types>
 </container>
</containers>

原作者:
...