有没有办法在Unity的XML配置中注册工厂?

时间:2015-02-12 22:57:42

标签: c# .net design-patterns unity-container

有没有办法在Unity的XML配置中注册工厂? Unity应该注入一些构造函数参数并使用工厂来实例化对象。

这是一个基于Spring .NET的示例:

<object id="name" type="Namespace.Factory, Assembly" factory-method="Create">
   <constructor-arg name="intParam" value="1" />
   <constructor-arg name="objParam" ref="objectName" />
</object>

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

  

有没有办法在Unity的XML配置中注册工厂?

简短的回答是否定的。在企业库用户语音中,有improve XML configuration的建议,其中包括工厂方法,但尚未实施。

但是,Stack Overflow用户Chris Tavares已创建Unity extension on Bitbucket,并在XML配置中支持工厂方法。

要使用此扩展,您可以沿着这些行使用XML配置(其中FactoryCreated是工厂创建的类型):

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
  <sectionExtension type="Unity.FactoryConfig.FactoryConfigExtension, Unity.FactoryConfig"/>
  <alias alias="Factory" type="Namespace.Factory, Assembly"/>
  <container>
    <register type="NameSpace.FactoryCreated, Assembly">
      <factory type="Factory" method="Create"/>
    </register>
  </container>
</unity>

不幸的是,此扩展仅支持三种类型的静态工厂方法签名:

  • Create()
  • Create(IUnityContainer container)
  • Create(IUnityContainer container, Type type, String name)

您的签名有所不同,但根据此扩展程序,您可以自行编写实施所需规则。

或者,在运行时使用fluent API指定工厂方法非常容易,但我想你已经意识到了这一点。

相关问题