c# - Unity - 通过 XML 的工厂

标签 c# .net dependency-injection inversion-of-control unity-container

我正在使用 Unity 框架作为 IoC 容器。

我的配置看起来像这样:

<unity>
  <container>
    <register type="Namespace1.IFoo, FooAsm"
              mapTo="Namespace2.Bar, BarAsm">
    </register>
</conainer>

我想注册一个容器来使用工厂方法。我如何使用 app.config 实现它?

我正在寻找这样的东西:

<unity>
  <container>
    <register type="Namespace1.IFoo, FooAsm"
              factory="Namespace2.Bar, BarAsm"
              method="create">
    </register>
  </conainer>
</unity>

有什么建议吗?

最佳答案

This thread对如何为 Unity 添加工厂方法支持提供了很好的回应。事实上你必须下载this bitbucket源(并将引用更改为 4.0 框架)。
如果您现在添加 Generic support for Unity你会得到一个非常棒的解决方案,可能看起来像这样:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity xmlns="schemas.microsoft.com/practices/2010/unity">
    <sectionExtension type="Unity.FactoryConfig.FactoryConfigExtension, Unity.FactoryConfig"/>
    <alias alias="Factory" type="Namespace1.GenericFactory`1, asm1"/>
    <container>
      <register type="Namespace1.ITest, asm1">
        <factory type="Factory[[Namespace1.ITest, asm1]]" method="Create" />
      </register>
    </container>
  </unity>
</configuration>

使用 xml 配置支持统一框架的通用工厂!
感谢所有评论:)

关于c# - Unity - 通过 XML 的工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943216/

相关文章:

c# - .Net Core 3 Serilog 的依赖注入(inject)

.net - ASP.NET MVC - 跨 View 传递数据

c# - 滚轮滚动事件覆盖以向上/向下增加一个元素

asp.net-core - 如何在类似 StructureMap 的 Scrutor 中注册程序集上的所有接口(interface)

c# - 在列表框中添加/删除项目的事件 c#.NET

c# - 传入字典的模型项是 '' 类型的,但是这个字典需要一个 '' 类型的模型项

C++ 依赖注入(inject) : Object lifetimes?

c# - 使用级联后备解决键控子图

c# - 为什么以及如何避免事件处理程序内存泄漏?

c# - 从验证属性中检索模型元数据