【问题标题】:How can a static class be resolved by the Unity Framework?Unity 框架如何解析静态类?
【发布时间】:2010-04-01 17:25:08
【问题描述】:

我希望统一框架能够解析我的配置文件中指定的静态类“MyStaticObject”。由于我的类是静态的,我收到错误“StaticObject 类型没有可访问的构造函数。”

我的配置文件如下:

  <unity>
    <typeAliases>
      <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
      <typeAlias alias="StaticObject" type="MyStaticAssembly.MyStaticObject, MyStaticAssembly, Version=1.0.0.0" />
      <typeAlias alias="staticobject" type="MyStaticAssembly.MyStaticObject, MyStaticAssembly" />
    </typeAliases>

    <containers>
      <container> 
        <types>
          <type type="StaticObject" mapTo="staticobject" name="My Static Object">
            <lifetime type="singleton"/>
          </type>
        </types>
      </container>
    </containers>
  </unity>

我将非常感谢任何帮助。

【问题讨论】:

    标签: .net object static unity-container


    【解决方案1】:

    Unity(或任何 IoC 容器框架)基本上是一个超级工厂,创建对象并将它们交给您。应该如何创建静态类的实例?

    重构您的设计以使用非静态类。如有必要,创建一个包装静态类并委托给它的类。

    编辑:如果您特别希望容器调用现有的静态工厂方法,可以使用StaticFactoryExtension

    编辑:除非您需要在部署后更换实现,否则我建议您避免 XML 配置并在应用程序的一个位置编写流畅的配置代码(调用 container.RegisterType 等)。您仍然可以在单元测试中使用单独的配置代码。

    【讨论】:

      猜你喜欢
      • 2018-06-10
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多