正在向要求在unityContainer中使用运行时参数的ctor注册类型

本文关键字:参数 运行时 注册 类型 ctor unityContainer | 更新日期: 2023-09-27 18:26:24

我使用的是UnityContainer

我想在里面注册AuthServiceTokenManager

AuthService将TokenManager作为私有member。

TokenManager有一个ctor:TokenManager(string name, string pass)

我在运行时从UI获取这些字符串。

Unity需要在配置文件中注册ctor参数。

我认为

  • 创建ctor:AuthService(TokenManager mgr)

但是,如何将对象(非基元)添加到配置文件中的<unity>节点?

  • 我如何仍然使用带有TokenManager ctor运行时参数的Unity

正在向要求在unityContainer中使用运行时参数的ctor注册类型

我的想法:

AuthService将有两个ctor-无参数和AuthService(bool initFromContainer)

在测试线束中,我将调用新的AuthService(false),然后覆盖TokenManager

使用AuthService_Accessor

TokenManager定义一个工厂,并将工厂注入AuthService。让工厂接受用户名和密码的参数。

每当您需要合并运行时参数时,注入工厂就可以很好地工作。但不要被这种模式冲昏头脑,否则你可能会遇到工厂过载的情况。