Unity 2.0中的XML配置更改
我们刚刚将一个项目从prism 2.0升级到prism 4.0,Unity出现了问题。很明显,在unity 2.0容器XML配置中出现了一些变化,我们的第一个错误是“Unrecognized element'typeConfig'”。代码如下: //-----------------------App.configUnity 2.0中的XML配置更改,xml,unity-container,prism,Xml,Unity Container,Prism,我们刚刚将一个项目从prism 2.0升级到prism 4.0,Unity出现了问题。很明显,在unity 2.0容器XML配置中出现了一些变化,我们的第一个错误是“Unrecognized element'typeConfig'”。代码如下: //-----------------------App.config <configSections> <section name="runDataParserConfiguration" type="Microsoft
<configSections>
<section name="runDataParserConfiguration" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<runDataParserConfiguration>
<typeAliases>
<typeAlias alias="IRunDataDispatcher" type="RunDataParser.Interface.IRunDataDispatcher, RunDataParser.Interface" />
<typeAlias alias="IRunDataParser" type="RunDataParser.Interface.IRunDataParser, RunDataParser.Interface" />
<typeAlias alias="IRunDataParserArray" type="RunDataParser.Interface.IRunDataParser[], RunDataParser.Interface" />
<typeAlias alias="Dispatcher" type="RunDataParser.Common.Dispatcher, RunDataParser.Common" />
<typeAlias alias="Parser1" type="RunDataParser.Parser1, RunDataParser" />
<typeAlias alias="Parser2" type="RunDataParser.Parser2, RunDataParser" />
<typeAlias alias="Parser3" type="RunDataParser.Parser3,RunDataParser" />
<typeAlias alias="Parser4" type="RunDataParser.Parser4, RunDataParser" />
<typeAlias alias="Parser5" type="RunDataParser.Parser5, RunDataParser" />
<typeAlias alias="Parser6" type="RunDataParser.Parser6, RunDataParser" />
<typeAlias alias="Parser7" type="RunDataParser.Parser7, RunDataParser" />
<typeAlias alias="Parser8" type="RunDataParser.Parser8, RunDataParser" />
<typeAlias alias="Parser9" type="RunDataParser.Parser9, RunDataParser" />
</typeAliases>
<containers>
<container>
<types>
<type type="IRunDataParser" mapTo="Parser1" name="parser1" />
<type type="IRunDataParser" mapTo="Parser2" name="parser2" />
<type type="IRunDataParser" mapTo="Parser3" name="parser3" />
<type type="IRunDataParser" mapTo="Parser4" name="parser4" />
<type type="IRunDataParser" mapTo="Parser5" name="parser5" />
<type type="IRunDataParser" mapTo="Parser6" name="parser6" />
<type type="IRunDataParser" mapTo="Parser7" name="parser7" />
<type type="IRunDataParser" mapTo="Parser8" name="parser8" />
<type type="IRunDataParser" mapTo="Parser9" name="parser9" />
<type type="IRunDataDispatcher" mapTo="Dispatcher" name="runDataDispatcher" />
<type type="Presentation.RawDataManagement.Wrapper.ParserDispatcherWrapper, RawDataManagement">
<typeConfig>
<constructor>
<param name="runDataDispatcher" parameterType="Dispatcher" />
<param name="runDataParsers" parameterType="IRunDataParserArray">
<array>
<dependency name="parser1" />
<dependency name="parser2" />
<dependency name="parser3" />
<dependency name="parser4" />
<dependency name="parser5" />
<dependency name="parser6" />
<dependency name="parser7" />
<dependency name="parser8" />
<dependency name="parser9" />
</array>
</param>
</constructor>
</typeConfig>
</type>
</types>
</container>
</containers>
</containers>
//----------------------------------------------------
我对typeConfig节点进行了注释,发现错误“未找到有效的属性来构造参数runDataDispatcher的值。请检查配置文件。”
在那之后,我做了一些研究,删除了parameterType属性,但这不起作用。
我注释了typeAlias节点并将typeAlias节点更改为alias,还注释了types节点(在节点下),并将其子节点类型更改为register。这一切都不起作用。在Unity版本1.2和2之间,XML配置已更改 正如你提到的,
现在是
,
应该是
您可以删除
标记、
标记、
和
标记
如果将节名从“runDataParserConfiguration”更改为“unity”可能对您有所帮助,那么您应该能够使用intellisense来指导配置。配置完成后,如果愿意,您可以随时将其更改回“runDataParserConfiguration”
您的配置将类似于:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="runDataParserConfiguration" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<runDataParserConfiguration xmlns="http://schemas.microsoft.com/practices/2010/unity">
<alias alias="IRunDataDispatcher" type="RunDataParser.Interface.IRunDataDispatcher, RunDataParser.Interface" />
<alias alias="IRunDataParser" type="RunDataParser.Interface.IRunDataParser, RunDataParser.Interface" />
<alias alias="IRunDataParserArray" type="RunDataParser.Interface.IRunDataParser[], RunDataParser.Interface" />
<alias alias="Dispatcher" type="RunDataParser.Common.Dispatcher, RunDataParser.Common" />
<alias alias="Parser1" type="RunDataParser.Parser1, RunDataParser" />
<alias alias="Parser2" type="RunDataParser.Parser2, RunDataParser" />
<container>
<register name="parser1" type="IRunDataParser" mapTo="Parser1" />
<register name="parser2" type="IRunDataParser" mapTo="Parser2" />
<register name="ParserDispatcherWrapper" type="Presentation.RawDataManagement.Wrapper.ParserDispatcherWrapper, RawDataManagement">
<constructor>
<param name="runDataDispatcher" type="Dispatcher" />
<param name="runDataParsers" type="IRunDataParserArray">
<array>
<dependency name="parser1" />
<dependency name="parser2" />
</array>
</param>
</constructor>
</register>
</container>
</runDataParserConfiguration>
</configuration>
尽管@RandyLevy的回答在大部分元素上对我有所帮助,但我还需要做一些修改。这些不在OP的文件中,但我将为遇到Unity 1.2到2.0升级问题的任何人添加它们 在我的应用程序中,依赖项不是通过构造函数注入的,而是通过公共属性注入的(不要问为什么) 因此,我有如下配置元素:
<type type="IMyService" mapTo="MyService">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
<property name="CurrentDataContext" propertyType="IDataContext" />
</typeConfig>
</type>
可修改为:
<register type="IMyService" mapTo="MyService">
<property name="CurrentDataContext" dependencyType="IDataContext" />
</register>
威尔可能会在其他方面帮助你。你好,图佐,谢谢你的回答!!我们得到了正确的配置。我把代码贴了进来,因为我没法把它贴在这里。