使用Unity XML设置属性

时间:2011-07-04 13:55:49

标签: unity-container enterprise-library

我想在存储库类中设置Entity Framework ObjectContext - ObjectContext是存储库的属性。

我正在使用Unity XML配置:

<register type="IUsersRepository" mapTo="SqlUsersRepository" >
  <property name="MyObjectContext">
    <value value="Per-Request" typeConverter="ObjectContextTypeConverter" />
  </property>
</register>

ObjectContextTypeConverter解释属性的值 - 在本例中为“Per-Request” - 并使用存储在HttpContext.Current.Items中的ObjectContext(asp.net中的每个请求集合)。

只有在Global.asax文件的Application_Start方法中加载Unity配置时,才会调用ObjectContextTypeConverter.ConvertFrom方法一次。然而,当我尝试使用Unity解析接口时,将不会再次调用ConvertFrom方法。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

原因是您将其设置为值。您可以将其设置为依赖项:

<property name="MyObjectContext">
    <dependency />
</property>

并通过注入工厂注入上下文:

Container.RegisterType<ObjectContext>(
    new InjectionFactory(c => GetTheContextInstance()));