Unity容器 - 注册单身" Int32"

时间:2017-11-20 10:04:22

标签: c# dependency-injection unity-container

我想做的就是(在app.config中)定义一个单身' Int32'。这个想法是它将是一个命名注册,并在多个其他类型定义中用作参数 - 这意味着实际的int值本身只需要定义一次(并减少手动错误)。

以下内容......

  <register type="int" name="MyInt">
    <lifetime type="singleton" />
    <constructor>
      <param name="value" value="23"/>          
    </constructor>
  </register>

现在我意识到Int32结构没有这样的构造函数,但我要求的内容似乎很简单,以至于我无法相信它无法完成。

我错过了一些明显的东西吗?

干杯!

2 个答案:

答案 0 :(得分:1)

您应该能够指定一个实例:

<container>
  <instance name="FooBar" type="System.Int32" value="123" />
</container>

这样解决了:

int value = container.Resolve<int>("FooBar");

如果你需要从配置中构造另一种类型,那就是这样:

<!-- "SomeType" is a type here, but you can have any mapping here -->
<register type="SomeType">
  <constructor>
    <!-- "value" is the name of the constructor argument -->
    <param name="value" dependencyName="FooBar" />
  </constructor>
</register>

答案 1 :(得分:0)

你能改变从依赖注入到阅读配置文件的行为吗? Here good example如何将int值放入配置文件并在没有DI的情况下读取它。

第二个解决方案:您可以使用singl属性和必要的构造函数将int值包装到简单对象中。