如何使用 ServiceStack Funq IoC 解析类型

2023-12-13

我正在尝试编写一个 JobActivatorHangFire using 服务栈IoC 和我在解析类型时遇到问题。我确信对于具有更多泛型经验的人来说,这将是一个简单的答案。

我传入的容器来自 HostContext.Container

using Hangfire;
using System;
using System.Collections.Generic;
using System.Linq;
using ServiceStack;

namespace Common.Hangfire
{

    public class FunqJobActivator : JobActivator
    {

        private Funq.Container _container;

        public FunqJobActivator(Funq.Container container)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }
            _container = container;
        }

        public override object ActivateJob(Type type)
        {
            return _container.Resolve<type>();  //** this doesn't compile
        }
    }
}

虽然 Funq 是具有通用 API 的类型化 IOC,但您可以添加辅助扩展方法来启用使用运行时类型解析实例,例如:

public static class ContainerExtensions
{
    public static object TryResolve(this Container container, Type type)
    {
        var mi = typeof(Container).GetMethods(BindingFlags.Public | BindingFlags.Instance)
            .First(x => x.Name == "TryResolve" &&
                   x.GetGenericArguments().Length == 1 &&
                   x.GetParameters().Length == 0);

        var genericMi = mi.MakeGenericMethod(type);
        var instance = genericMi.Invoke(container, new object[0]);
        return instance;
    }
}

这将允许您使用运行时类型解析已注册的依赖项,例如:

var container = new Container();
container.Register(c => new Foo());

var instance = container.TryResolve(typeof(Foo));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ServiceStack Funq IoC 解析类型 的相关文章

  • 是否可以使静态控件透明?

    我正在尝试实现一个静态控件 该控件刷新 更改文本 以响应每秒发生一次的某个事件 由于我不想每秒绘制整个客户区域 所以我决定使用静态控件 现在的问题是父窗口被蒙皮 这意味着它有自定义位图作为背景 而静态控件没有适应 所以我正在寻找使静态控件的
  • 为什么更新外键后引用约束会不一致?

    抱歉 这个模糊的标题很难用一句话来描述 我有 2 个实体User and UserAddress 其中 User 有 2 个外键DefaultInvoiceAddressId and DefaultDeliveryAddressId和 Us
  • 以 ISO 8601 格式输出日期

    如何在 C 中获取以下格式的日期 2016 04 26T19 50 48Z include
  • 求 a 范围内的 pow(a^b)modN

    对于给定的b and N以及一系列a say 0 n 我需要找到ans 0 n 1 where ans i 没有a s为此pow a b modN i 我在这里搜索的是可能的重复pow a b modN对于一系列a 以减少计算时间 例子 i
  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 运行时两个注册之间的简单注入器基于动态上下文的注入

    我有一个使用 Simple Injector 进行命令处理程序注册的中介应用程序 并且注入和处理程序均已设置并完美运行 class DoWashingCommandHandler IRequestHandler
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 如何处理作为参数传递到方法中的 Lambda 表达式 - C# .NET 3.5

    我对 Lambda 表达式的了解有点不稳定 虽然我可以编写使用 Lambda 表达式 又名 LINQ 的代码 但我正在尝试编写自己的方法 该方法采用一些 Lambda 表达式类型的参数 背景 我正在尝试编写一个方法 该方法从任何其他对象类型
  • 在 Windows 服务中使用 OleDb 从 Excel 读取数据?

    免责声明 我知道这是一种不好的做事方式 这是我们与客户的唯一选择 Problem 我们需要每隔 x 时间从 Excel 文件读取数据 数据通过第三方 Excel 插件不断变化 应用程序的环境是 Windows XP SP1 和 Net 2
  • 如何在 C++ 中从模板基类的构造函数调用模板超类的构造函数?

    我正在使用 sublimetext3 用 c 进行编程 我的程序有一个名为 Array 的超类和一个名为 IntArray 的子类 这两个类都是模板类 目前 我在编译该程序时遇到问题 它不断在我的 IntArray cpp 文件中给出错误
  • 测试从 ComboBox 派生的自定义控件

    我创建了一个从 ComboBox 派生的控件 并希望对其行为进行单元测试 但是 它在我的单元测试中的行为似乎与实际应用程序中的行为不同 在实际应用程序中 Combobox DataSource 属性和 Items 同步 换句话说 当我更改
  • ASP.NET 中的 thread.sleep

    我正在为我的网站模拟彗星实时馈送协议 因此在我的控制器中我添加 while nothing new before timeout Thread Sleep 1000 但我注意到添加此功能后整个网站变慢了 调试后我得出结论 当我打电话时Thr
  • 如何让 PCRE 与 C++ 一起使用?

    这是一个新手问题 但我希望我能尽可能清楚地表达我的问题 我正在尝试用 C 进行模式匹配 我已经从以下位置下载了 PCRE 的 Win32 版本here http gnuwin32 sourceforge net packages pcre
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 链接错误:xxx 已在 *****.LIB 中定义:: 究竟出了什么问题?

    Problem 我正在尝试使用一个名为DCMTK http dicom offis de dcmtk它使用了一些其他外部库 zlib libtiff libpng libxml2 libiconv 我已经从同一网站下载了这些外部库 LIB
  • 为什么 ASP.Net MVC Range 属性采用类型?

    我只是想知道为什么范围验证属性可以采用类型和两个字符串作为参数 这是为了根据枚举或类似的东西验证字符串吗 另外 我想做的是找到一种简单的方法来验证必须出现在枚举中的 3 个字符的字符串 有什么建议吗 谢谢 亚历克斯 我确实发现你提到的 Ra
  • 如何通过 Excel 互操作对象自动调整列大小?

    下面是我用来将数据加载到 Excel 工作表中的代码 但我希望在加载数据后自动调整列的大小 有谁知道自动调整列大小的最佳方法 using Microsoft Office Interop public class ExportReport

随机推荐

  • 动态创建的单选按钮列表

    有一个母版页 内容页面有一个包含请求变量的超链接列表 您单击其中一个链接即可转到包含单选按钮列表的页面 也许 第一个问题 当我到达新页面时 我使用其中一个变量来确定是否将单选按钮列表添加到页面上的占位符中 我尝试在 page load 中执
  • 从 mysqli 更改为 pdo

    我对这段代码没有问题 它出奇地工作正常 但我真的不明白它是如何工作的 甚至不明白它是否正确 所以 我对 mysqli 进行 ajax post 或 get 调用的查询如下 con mysqli connect localhost root
  • Lisp中最长的元素链

    语句 找出最长的字符链并返回 例如 输入 1 2 2 3 3 3 4 4 4 4 5 6 输出 4 4 4 4 问题 我可以设法识别列表中的所有不同组并比较它们 但无法让函数返回正确的子集列表 它仅返回最后分析的组 code define
  • 使用 JSOUP 登录 ConEd 网站

    我已经广泛阅读了有关如何做到这一点的内容 并且尝试了许多不同的变体 但我无法让它发挥作用 基本上 我只想登录 ConEdison 网站并抓取我的账单历史记录 这是我所拥有的 Connection Response loginForm Jso
  • 在 django - python 中按名称搜索选择字段

    我在模型中有以下选择字段 STATUS REVIEW RISK ESTIMATE CHOICES 0 High 1 Medium 2 Low class SiverifyProblemStatement models Model risk
  • Bigquery在单个选择中多次取消嵌套

    对此进行跟进 Bigquery 组合来自 2 个不同表的重复字段 ElliottBrossard 的上述解决方案正是我所寻找的 谢谢 我需要从上面取消嵌套字段以获取学生的聚合 比如说 有一个额外的成本字段 每门课程 例如假设上面的输出在st
  • 如何检测wcf服务端的绑定

    假设我有一个 WCF 服务 其中多个端点具有不同类型的绑定 如 tcp basichttp wshttp 等
  • 根据浏览器语言重定向用户(不是 php)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我的网站将采用 3 种语言 法语 fr 是默认语言 该网站的结构如下 根目录 注意 我没有使用 php 文件 只是简单的 html fr Index html About us
  • 角度材质:垫选择不选择默认值

    我有一个垫选择 其中选项是数组中定义的所有对象 我试图将值设置为默认选项之一 但是在页面呈现时它被保留为选中状态 我的打字稿文件包含 public options2 id 1 name a id 2 name b public select
  • 在fragmentpageradapter中重用片段

    我有一个可以浏览片段的视图分页器 我的FragmentPagerAdapter子类在中创建一个新片段getItem看起来很浪费的方法 有没有FragmentPagerAdapter相当于convertView in the listAdap
  • Android koush/ion lib 无法发布和接收 JSON 响应

    我使用 ION 来 GET POST 进行 REST 并将图像放入 ListView 但我无法使用 POST 方法并接收 JSON 形式的响应 我使用的ION版本是1 3 7 在模拟器以及真实设备 4 1 1 4 2 2 和 4 4 上进行
  • Android Intent.getStringExtra() 返回 null

    这是将字符串添加到 Extras 的方式 Intent i new Intent i putExtra Name edt name getText i putExtra Description edt desc getText i putE
  • 嵌入带有频道 ID 的最新 YouTube 视频

    我正在为朋友构建一个网站 但在使用 YouTube 播放器 API 时遇到了一些问题 这是我迄今为止嵌入的 HTML IFrame 这不起作用 因为他的 YouTube 频道使用新的 ID 系统 并且在
  • OpenGLException:禁用数组缓冲区对象时无法使用偏移。在调用 glEnable(GL_ARRAY_BUFFER) 后的一行上?

    我不断收到此异常 Exception in thread main org lwjgl opengl OpenGLException Cannot use offsets when Array Buffer Object is disabl
  • 如何将自定义字体添加到react-native v0.61.x?

    如何在react native 0 61 x 中添加自定义字体 0 60 添加自动链接后 我不知道如何链接自定义字体 当我执行这个命令时 react native link 这会产生一些额外的链接 从而产生额外的错误 那么我如何才能仅链接f
  • 如何用这些列的中位数替换数值列中的 NA? [复制]

    这个问题在这里已经有答案了 我正在处理具有多种数据类型的数据框 我只想替换 NA 值数字列与该特定列的中位数 我见过关于替换为的问题很多 但不是中位数 我的 df 类似于以下代码 my groups lt c rep A 5 rep B 5
  • 带有条件包含的 EF 查询

    我有两个表 一个 WorkItem 表和一个 WorkItemNote 表 如何返回一个 WorkItem 以及满足特定条件的所有 WorkItemNotes 我认为这应该很简单 几乎就像一个条件 包含 对吗 我一直在计划写作a tip对此
  • ZF2 Doctrine 2 ObjectSelect 具有不同的字段

    为了填充我的表单 我使用字段集方法 对于一个给定的表单字段 我将使用选择 选项直接来自这样的实体 this gt add array type gt DoctrineModule Form Element ObjectSelect name
  • 如何防止 Visual Studio Code 总是重新打开以前的文件或文件夹?

    Visual Studio Code 似乎总是会记住我的会话并重新打开上次使用它时打开的文件和 或项目 当从命令行运行提供的文件或文件夹时 它显然表现正确 但是当从任务栏快捷方式打开时 我希望它默认为空环境 有什么办法可以改变这种行为吗 您
  • 如何使用 ServiceStack Funq IoC 解析类型

    我正在尝试编写一个 JobActivatorHangFire using 服务栈IoC 和我在解析类型时遇到问题 我确信对于具有更多泛型经验的人来说 这将是一个简单的答案 我传入的容器来自 HostContext Container usi