Unity:在 xml 配置文件中将参数传递给自定义生命周期构造函数

发布于 2024-09-08 08:40:08 字数 427 浏览 3 评论 0原文

我这样编写了 CustomLifetimeManager:

public class CustomLifetimeManager <T> : LifetimeManager
{
    private readonly string _arg;

    public CustomLifetimeManager(string arg)
    {
      _arg = arg;
    }
}

现在,可以轻松地以编程方式配置容器,但是如何将其添加到配置文件中,如下所示?

<type type="myTime"
      mapTo="myImpl">
      <lifetime type="CustomLifetimeManager"/>
</type>

I wrote my CustomLifetimeManager like this:

public class CustomLifetimeManager <T> : LifetimeManager
{
    private readonly string _arg;

    public CustomLifetimeManager(string arg)
    {
      _arg = arg;
    }
}

Now, it works easy configuring the container programmatically, but how add it in configuration file like the following?

<type type="myTime"
      mapTo="myImpl">
      <lifetime type="CustomLifetimeManager"/>
</type>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海夕 2024-09-15 08:40:08

您需要添加第二个类:TypeConverter。该类负责获取字符串并将其转换为您想要的任何类型。一旦实现它,您就可以在配置文件中执行类似的操作:

<register type="MyType" mapTo"MyImpl">
  <lifetime typeConverter="CustomLifetimeManagerConverter" value="arg" />
</register>

并且从那里它应该可以正常工作(假设配置可以像任何其他类型一样找到类型转换器)。

You need to add a second class: A TypeConverter. This class is responsible for taking a string and turning it into whatever type you want. Once you implement it, you can then do something like this in your config file:

<register type="MyType" mapTo"MyImpl">
  <lifetime typeConverter="CustomLifetimeManagerConverter" value="arg" />
</register>

and from there it should just work (assuming the config can find the type converter like any other type).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文