gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:28:47 27 4
gpt4 key购买 nike

我有一个正在运行且运行良好的 Unity 应用程序,但我们目前正在通过对所有编译警告采取行动来清理我们的代码。

由于过时的 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
}

但这会因空引用而失败。

我应该如何更新代码以消除对过时方法的使用?

最佳答案

我已经设法让它工作了。秘诀在于使用 Configure 方法的重载,该方法采用容器名称来配置每个容器元素:

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

到目前为止,这看起来好像与过时的 Container.Configure 方法所做的一样 - 一切都按预期工作。

关于unity-container - 如何替换我的 Unity 解决方案中过时的 Microsoft.Practices.Unity.Configuration.ContainerElement.Configure 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com