Unity Framework的容器类型的构造函数param的类型

时间:2009-04-07 01:03:18

标签: c# unity-container

目前我正在尝试使用配置文件来提供类似于此的Unity Framework信息......

<configuration>
<unity>
 <typeAliases>
  <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,   Microsoft.Practices.Unity, Culture=neutral, Version=1.1.0.0,   PublicKeyToken=31bf3856ad364e35" />
 </typeAliases>
 <containers>
   <container>
     <types>  
       <type type="Common.ISharedConfiguration, Common, Version=3.1.0.0, Culture=neutral,  PublicKeyToken=1111111111111111" mapTo="Common.SharedConfigurationManager, Common, Version=3.1.0.0, Culture=neutral, PublicKeyToken=1111111111111111">
         <lifetime type="singleton" />
         <typeConfig  extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
           <constructor>
             <param name="OurEnumChoice" parameterType="MyProjectsEnum" >
               <value value="MyProjectsEnum.OurFirstConstant" type="MyProjectsEnum"/> 
             </param>
           </constructor> 
         </typeConfig>
       </type>
     </types>
   </container>
 </containers>
</unity>
</configuration>

如果我选择System.String这样的东西并让我的具体类有一个字符串的构造,那么Unity的配置文件信息很有用。我选择使用Enum代替字符串Unity的那一刻会抛出这样的错误......

  

无法从程序集Microsoft.Practices.Unity.Configuration,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = 31bf33856ad364e35

加载MyProjectsEnum类型

我认为我需要通过这个配置过程理解Unity可以通过简单类型将其作为理解类型传递的内容。

1 个答案:

答案 0 :(得分:2)

您需要为'parameterType'和'type'属性指定完全限定的类型名称。你为'typeAlias'节点做的大致相同。默认情况下,Unity会为不合格的类型查找自己的程序集。