与需要参数的工厂方法统一

2024-03-01

我想使用需要参数的工厂方法在 Unity 容器中注册类型。这些参数将由统一解析,但只能在运行时解析。

工厂方法代码:

public static IApp Create(IOne, ITwo) {...}

注册码:

container.RegisterType(typeof(IApp), new InjectionFactory(f => App.Create(???, ???)));

我需要什么来替换“???” ?

更多信息:

我的 Unity 配置分两个阶段进行。第一阶段(应用程序正在启动),我注册了除一个之外的所有对象:

container.RegisterType<IOne, One>();
container.RegisterType<ITwo, Two>();
container.RegisterType<IApp, App>();
// ...

第二阶段(用户正在记录),我只是注册一个上下文对象的实例,该实例在我所有类的构造函数中使用(One, Two, App, ...) :

var childContainer = container.CreateChildContainer();
childContainer.RegisterInstance<AppEnvironment>(new AppEnvironment(userName));

这是我的代码,没有使用 InjectionFactory。效果很好。现在,我必须多次注册我的 IApp 接口,每次调用不同的静态方法。静态方法示例:

public static IApp Create(IOne one, ITwo two, AppEnvironment env) 
{
    _one = one;
    _two = two;
    _env = env;
}

如果我注册 IApp 这个代码:

container.Register(typeof(IApp), new InjectionFactory(f => App.Create(container.Resolve<IOne>(), container.Resolve<ITwo>(), container.Resolve<AppEnvironment>()));

然后我的环境变量没有设置。

但是如果我注册我的 env 实例(仅出于测试目的,在我的情况下我不能这样做),它就可以工作。


终于得到了解决方案。它看起来像威利斯之一:

container.RegisterType<IApp, App>(
    new InjectionFactory(
        f => App.Create(
            f.Resolve<IOne>(), 
            f.Resolve<ITwo>()
        )
    )
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与需要参数的工厂方法统一 的相关文章

  • 将列表元素分组到字典中

    我有一个包含 8 个元素的列表 ConfigFile ControllerList 该列表的类型为 List
  • Word Automation - 禁用警报

    我正在自动化 Word 因此我想抑制所有警报 Word Application word new Word Application word DisplayAlerts Microsoft Office Interop Word WdAle
  • 使用正则表达式或其他解析从文件中读取值

    我有一个记录带有时间戳的值的文件 我必须在特定时间后读取特定值 例如 文件有 2013 03 03 19 08 22 car 2001 Ford 2013 03 03 19 08 27 Truck 2012 Chevy 2013 03 03
  • 为什么隐式类型转换没有警告?

    我终于发现了程序中的一个错误 该错误是由返回类型的隐式类型转换引起的 即使g Wall对此没有任何警告 我想知道是否有什么办法可以快速找出这种无意识的错误 include
  • Boost.Intrusive 和 unordered_map

    我希望使用侵入性的 unordered map 由于某种原因 库中只有一个 unordered set 还有一个侵入式哈希表 但我不确定它是否具有相同的功能 而且它没有相同的接口 我错了吗 我错过了 unordered map 链接吗 如果
  • 如何通过 C# 检测字符串中的阿拉伯语或波斯语字符?

    我想检测Arabic or Persian字符串中的字符 例如 在字符串中搜索 15 Aspire ES1 533 C4UH 并返回true 并在字符串中搜索 Aspire ES1 533 C4UH 并返回false string patt
  • 在主窗体上使用 BeginInvoke 调用的网络任务未执行

    我使用 Visual Studio 2013 构建了一个具有单个表单的 C 应用程序 并且该应用程序有两个更新屏幕的例程 更新屏幕的例程需要在主线程上运行 因此我自己的线程 不与屏幕交互 在需要更新时调用主窗体上的 BeginInvoke
  • 将 XML 转换为 JSON 时保留 json:Array 属性

    我有一段 XML 看起来像
  • Cmake 链接到共享库找不到​​库

    在 Ubuntu 上 我有两个目录 build and src In src my CMakeLists txt文件有以下几行 add executable Test main cpp target link libraries Test
  • 与智能指针的返回类型协方差

    在 C 中我们可以这样做 struct Base virtual Base Clone const virtual Base struct Derived Base virtual Derived Clone const overrides
  • 再次对存储库和持久性一无所知

    这就是我要做的 我有一个通用的存储库类Repository
  • std::mutex 和 std::shared_mutex 之间的区别

    我遇到了一个std shared mutex in C 17 到底是什么std shared mutex以及它有何不同std mutex 如中所述文档 http en cppreference com w cpp thread shared
  • 仅使用 url 嵌入视频

    给定一个 youtube url 我如何使用 net c 将视频嵌入到页面中 只需添加如下一行 将 autoplay 设置为 0 或 1 取决于您是否希望人们真正留在您的页面上
  • HTTP 错误 500.35 - ANCM 同一进程中的多个进程内应用程序 ASP.NET Core 3

    从今天早上开始 没有对项目代码进行任何更改 一个非常简单的 Web API 一个控制器和 3 个方法 使用 Swagger 它不再启动 我收到错误 HTTP 错误 500 35 ANCM 同一进程中有多个进程内应用程序 事件查看器报告最无用
  • 绑定到 ListView 项目从视图模型中点击的属性

    我正在尝试使用 itemtapped 属性将事件绑定到菜单页面上的 ListView 目前我在我的应用程序中使用 MVVM Xamarin 表单实验室 框架 我想要完成的是当用户点击菜单项时应用程序导航到正确的视图 这是xaml代码
  • STL迭代器是否保证集合更改后的有效性?

    假设我有某种集合 并且我在它的开头获得了一个迭代器 现在假设我修改了该集合 无论集合或迭代器的类型如何 我仍然可以安全地使用迭代器吗 为了避免混淆 以下是我讨论的操作顺序 获取集合的迭代器 修改集合 显然 不是其中的元素 而是集合本身 使用
  • 如何为 Blazor MapFallbackToFile() 生成正确的错误

    我有一个项目想要用作 Web API 和 Blazor wasm UI 该 API 也可以从其他项目访问 因此我希望该 API 向消费者提供有用的错误详细信息 我现在通过使用该网站来实现这两个目的MapFallbackToFile 方法 但
  • 在 C 中打印字符串的所有排列

    我正在学习回溯和递归 并且我陷入了打印字符串所有排列的算法 我用以下方法解决了它贝尔算法 http programminggeeks com bell algorithm for permutation 用于排列 但我无法理解递归方法 我在
  • 提高大型结构列表的二进制序列化性能

    我有一个以 3 个整数保存 3d 坐标的结构 在测试中 我将 100 万个随机点放在一起 List 然后对内存流使用二进制序列化 内存流大小约为 21 MB 这似乎非常低效 因为 1000000 点 3 坐标 4 字节应该至少为 11MB
  • 通过网络共享的 SQL CE

    我之前见过这个问题 但找不到关于什么是可能 不可能以及什么解决方法可能可用的明确解释 我有一个现有的 C 应用程序 它使用 SQL CE 来存储本地信息 该数据库只能由单个应用程序访问 并存储在用户的 appdata 文件夹中 某些环境将

随机推荐

  • 如何在自组织图中关联回原始数据点

    我正在使用 R kohonen 包来实现 SOM 我发现将自组织映射产生的代码向量与原始数据点相关联时遇到麻烦 我尝试在训练过程中包含没有权重的标签 但结果令人难以理解 有没有办法在训练过程完成后从每个节点引用原始数据点 您将从中获得中心值
  • C 中的有符号除法

    我正在阅读书中有关 C 可移植性的部分C Traps and Pitfalls安德鲁 科尼格 关于整数除法 q a b r a b 如果a是负数 显然是提醒r可以是负数或正数 同时满足属性 q b r a 通常我会期望r如果股息为负a是负数
  • iOS:位置服务列表中缺少应用程序

    我的应用程序使用 iPhone 的 GPS 功能 之前运行良好 因为它提示用户允许使用位置服务 并且它显示在 设置 gt 位置服务 列表下 我从应用程序商店卸载并重新下载了该应用程序 但它们都不再起作用 该应用程序是同一版本 并且已经有一段
  • Flutter 中的 Sqlite,数据库资产如何工作

    我正在看这个 https github com tekartik sqflite blob master doc opening asset db md https github com tekartik sqflite blob mast
  • 更改 UIAlertView 的背景颜色?

    我想更改 UIAlertView 的背景颜色 但这似乎没有颜色属性 AlertView的背景是一张图片 你可以改变这个图像 UIAlertView theAlert UIAlertView alloc initWithTitle Atent
  • “似乎不是 NgModule 类。”更新到 Angular@15 后出错

    我正在尝试从以下位置更新Angular 13 to Angular 15 这样做之后 我收到了我完全不明白的编译错误 SharedModule does not appear to be an NgModule class src app
  • 在裸机 RPI 集群上使用 Metallb 的 LoadBalancer 安装后无法工作

    我正在摆弄我设置的 RPI 集群Kubeadm我想让 LoadBalancers 能够在集群上工作 节点的 IP 是静态的 并且设置为192 168 1 100 192 168 1 103对于主节点和工作节点 我已经使用官方网站文档安装了
  • asp.net OnClientClick 未呈现最初禁用的按钮

    我有一个禁用的 asp Button 稍后我用 JavaScript 启用它 像这样
  • s[i]^=32 如何将大写转换为小写?

    int main string s cout lt lt enter the string lt lt endl cin gt gt s for int i 0 i lt s length i s i 32 cout lt lt modif
  • Clojure 常量的约定、样式和用法?

    在 Clojure 中定义常量的最佳实践有哪些 包括样式 约定 效率等 例如 这是正确的吗 def PI 3 14 问题 Clojure 中常量应该大写吗 从风格上来说 它们应该在一侧还是两侧都有星号 字符 我应该注意哪些计算效率注意事项
  • 安卓白标

    我在一家公司工作 该公司在商店里有这个 foo 应用程序 该应用程序是我们硬件的助手 深受经销商的喜爱 我们确保该名称尽可能通用 以便我们的供应商能够将应用程序作为 他们的应用程序 进行营销 然而 一些经销商确实希望在应用程序上显示他们的确
  • 使用 stanford-nlp 对一些文本进行分块

    我正在使用 stanford core NLP 并使用此行加载一些模块来处理我的文本 props put annotators tokenize ssplit pos lemma ner parse dcoref 是否有一个模块可以加载以分
  • jQuery 使用数据 id 对元素进行排序

    我的 HTML 结构如下 div class clist div div div div div div div div div div div div div div div 我想将它们排序为 div class clist div di
  • 从 Google Sheets API 获取过滤后的数据

    我正在使用 nodeJS 从 google 工作表中获取数据 URL 如下所示 var url https sheets googleapis com v4 spreadsheets sheet key values Sheet2 A1 J
  • 编译与编译树与编译文件之间的区别?

    我试图将我的项目集成到 android studio 中 但在添加依赖项时我有点困惑 我不知道哪一个效果好 我尝试过编译文件树和编译文件 它不适合我 我找到了一些方法 任何人都可以告诉我哪一种适合添加库 仅像 admob 这样的 jar 文
  • ModSecurity CSRF 规则警报

    我已经安装了 Owasp ModSecurity 之后我的应用程序上的所有页面都有此规则警报 ModSecurity Warning Match of eq 1 against ARGS CSRF TOKEN required file e
  • “添加为链接”选项发生了什么?

    为什么是添加现有文件作为链接 http visualstudiohacks com tips options add an existing file to a project without copying it 功能仅适用于托管项目 我
  • 从 url 加载图像

    如何从图像的 url 将图像加载到 UIImage 对象 目前 我正在使用 UIImage FromFile 加载图像 并将图像作为内容包含在内 但我需要能够从另一个网站获取它 image Image UIImage FromFile im
  • GitHub Action:使用 PowerShell 将环境变量传递到 Action 中

    我正在尝试构建一个将在 PowerShell 中运行的工作流程 我正在为我的分支名称设置一个环境 以便在签出不同存储库的步骤中使用 run branchName Env GITHUB REF replace refs heads echo
  • 与需要参数的工厂方法统一

    我想使用需要参数的工厂方法在 Unity 容器中注册类型 这些参数将由统一解析 但只能在运行时解析 工厂方法代码 public static IApp Create IOne ITwo 注册码 container RegisterType