任何现有的 IoC 容器都可以动态创建惰性代理类吗?

2023-12-04

我研究不同的 DI 模式。 现在我对惰性生命周期实现感兴趣。 例如,我想编写一个代理类,将工厂隐藏在服务接口后面。 任何现有的 IoC 容器 (.NET) 都可以在运行时动态创建这种代理类吗?

interface IService
{
    void Foo();
    void Bar();
}

class ServiceFactoryProxy : IService
{
    private readonly Func<IService> _factory;

    public ServiceFactoryProxy(Func<IService> factory)
    {
        if (factory == null) throw new ArgumentNullException("factory");
        _factory = factory;
    }

    public void Foo()
    {
        _factory().Foo();
    }

    public void Bar()
    {
        _factory().Foo();
    }
}

以下是在 Castle 中完成此操作的方法:

http://litemedia.info/lazy-loading-property-with-castle-dynamicproxy2

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

任何现有的 IoC 容器都可以动态创建惰性代理类吗? 的相关文章

  • Windows 窗体中的标准 Windows 菜单栏

    我注意到添加了一个MenuStrip 来自工具箱 我的表单设计不会产生像许多本机 Windows 应用程序中那样的菜单栏 相反 我得到了一个像 Visual Studio 自己的菜单栏 没有任何样式设置MenuStrip似乎模仿了更常见的本
  • 运算符“">”不能应用于类型“ulong”和“int”

    我很好奇为什么 C 编译器只为第二个 if 语句提供错误消息 enum Permissions ulong ViewListItems 1L public void Method int mask 138612833 int compare
  • 变量替换为字符串

    我可以做类似的事情吗 s said s blah name blah 在 VB NET 中 写字越来越痛苦name said blah blah 在VB NET 14 对于VS2015 中 您可以使用字符串插值 https msdn mic
  • 序列化和反序列化 HttpRequestMessage 对象

    有人有序列化 HttpRequestMessage 对象的经验吗 尝试使用 Json net 它部分有效 也就是说 JsonConvert DeserializeObject 由于 StringContent 构造问题而失败 无法找到用于类
  • 如何防止在 ActiveX 方法调用期间重新进入 WPF 事件处理程序?

    我们从 WPF 和 STA 应用程序中调用 ActiveX 组件上的方法 此调用是通过以下方式后期绑定执行的 res ocx GetType InvokeMember methodName flags null ocx args 其中 oc
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • DataTable.GetChanges() 不断返回 NULL

    我正在尝试获取存在于的所有行allData但不在removeData public static DataTable RemoveDuplicateRows DataTable allData DataTable removeData re
  • SqlCommand.Dispose() 在 SqlTransaction.Commit() 之前?

    在提交事务之前处理分配给事务的命令是否有效 我自己测试了以下代码 它似乎工作得很好 但这是一个相当小的例子 所以我正在寻找是否有人确实知道的确认 internal static void TestTransaction try Progra
  • 为什么在 CDI 中使用构造函数而不是 setter 注入?

    我在这里找不到任何合理的答案 所以我希望它不是重复的 那么为什么我应该更喜欢 setter 或构造函数注入而不是简单的注入 Inject MyBean bean 如果您需要在类初始化期间对注入的 bean 执行某些操作 我会使用构造函数注入
  • WCF服务健康状况监控

    我刚刚实现了 WCF 服务 目前正在研究服务监控选项 我们的服务器团队目前仅托管 java 服务 希望我们的实例始终运行 因此它可以在该实例的生命周期内收集数据 他们表示将使用我们的 webmon 操作之一来获取统计信息 但我们正在使用每次
  • 如何使正则表达式匹配不区分大小写?

    我有以下正则表达式加拿大的邮政编码 http en wikipedia org wiki Postal codes in Canada ABCEGHJKLMNPRSTVXY 1 d 1 A Z 1 d 1 A Z 1 d 1 它工作正常 但
  • 为什么 dotnet 的 char.IsLower() 是静态方法?

    这似乎违背了每一个设计准则 接受 T 类型的单个参数的静态方法通常应该只是一个成员方法 这太奇怪了我实际上不得不发布一个StackOverflow问题 https stackoverflow com questions 389100 is
  • 为标签生成成员:我有什么理由应该这样做?

    我在这里读过另一篇文章 因此 如果可能的话 您不应该为标签生成成员 我想知道有什么潜力缺点到这会是 我说的好处是性能提高 对吗 还要别的吗 我有一个带有 100 个标签的 winform 应用程序 不产生成员有什么好处 还是只有在 Web
  • 在 C# 中将 ANSI (Windows 1252) 转换为 UTF8

    I ve 之前问过这个 https stackoverflow com q 4351985 398713之前在 Stack Overflow 上以一种迂回的方式 这次想把它做好 如何将 ANSI 代码页 1252 转换为 UTF 8 同时保
  • 用 C# 编写插件或插件框架

    我正在用 C 编写一个 Addin 框架 我想知道如何使 Addin 可以卸载而无需重新启动应用程序 我听说过 AppDomains 但是它们是如何工作的呢 外接程序是否可以添加可扩展性类并通过接口在主应用程序域中调用 并且仍然可卸载并调用
  • 使用 XML 的 WCF 请求验证

    我有一个WCF使用 Net 4 0框架的SOAP Web服务 我在用contract first方法 即 服务代码是使用 WCSF Blue 工具从手写 WSDL 生成的 我对请求消息有以下要求 如果价格小于 100 则不得有税项 但如果大
  • WPF 如何从 DataTemplate 访问控件

    我有一个包含网格的数据模板 网格内有一个组合框
  • 如何在VS2017中从.net项目引用netstandard项目?

    我有一个 netstandard2 0 项目 用于与第三方 Web 服务交互 我需要在同一解决方案中引用旧的 net 4 6 2 项目中的该项目 但是当我这样做时 我会收到一堆关于需要引用我定义的类型的错误 例如 我将调用 netstand
  • 什么是扩展方法?

    NET 中的扩展方法是什么 编辑 我已在以下位置发布了后续问题扩展方法的使用 https stackoverflow com questions 403619 usage of extension methods 扩展方法允许开发者向公众添
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会

随机推荐

  • 如何使用 vim 寄存器?

    I only know of one instance using registers is via CtrlR whereby I paste text from a clipboard 寄存器还有哪些其他用途 如何使用它们 您所了解的有
  • 如何转义 NULL 字节作为 Makefile 中 shell 命令的参数

    在 Makefile 中 我运行一个 shell 命令 我想传递一个 NULL 字节作为参数 以下尝试失败 echo shell bin echo n x00 ruby e puts STDIN read inspect 它生成 echo
  • React App 部署到 Azure Web 的流程?

    我目前正在尝试将默认的 React Web 应用程序部署到 Azure 但遇到了一个问题 虽然我将构建文件夹的内容部署到 azure 托管的 site wwwroot 文件夹 但在转到我的托管时最终会出现以下页面地址 https 项目名称
  • 带有用户控件的延迟加载选项卡

    我想在 AJAX 选项卡容器中使用延迟加载选项卡 我已经实现了 但我面临的问题是 当我单击按钮或触发该用户控件中的任何事件时 它不会被触发 什么都没发生
  • 如何在 C 中使用 /dev/random 或 urandom?

    我想用 dev random or dev urandom在C中 我该怎么做呢 我不知道如何在 C 中处理它们 如果有人知道请告诉我如何处理 谢谢 一般来说 最好避免打开文件来获取随机数据 因为该过程中有很多故障点 在最近的 Linux 发
  • 使用一个或多个参数实例化一个新的 PHP 类

    我有这个获取功能 public static function fetch class key try obj new class key catch Exception e return false return obj 它通过调用该类的
  • Scala:通过 if 语句更正表示类型的类型推断

    这是后续two 问题关于表示类型 它们是特征的类型参数 旨在表示有界类型成员 或类似的东西 底层的类型 我已经成功创建了类的实例 例如ConcreteGarage 有实例cars有界类型成员CarType trait Garage type
  • 实体框架 CTP5 代码优先映射 - 同一个表中的外键

    我如何使用模型构建器来映射这样的东西 哪里有一个可以为空的外键引用相同的表主键 Table Task taskID int pk taskName varchar parentTaskID int nullable FK 任务类别 publ
  • 如何在实体框架中使用“In”SQL关键字?

    这是我的 SQL 命令 SELECT KEY NAME from COMPANY c WHERE KEY IN select KEY from USER COMPANY where UserId UserId order by NAME a
  • 使用 JSON.Net 解析自定义日期格式

    我收到一个 JSON 日期以下格式 launch date 1250553600 我应该如何修改以下内容以包含自定义日期时间解析器 该解析器允许我将该数字转换为DateTime object JsonConvert DeserializeO
  • 创建 XSLT 转换以展平 multiRef 编码的 SOAP 消息

    输入是一个mutliRef 编码的SOAP 消息 文档 你怎么用 用于展平多引用的 XSLT 可以引用multiref节点来使用 多次 并且自身递归引用其他multiRef 节点 该结构中唯一可以安全引用的部分是 multiRef 元素以及
  • 如何设置机会状态 - Dynamics CRM?

    我正在尝试更新以下状态开放的机会通过使用赢得机会请求和失去机会请求MSDN 中提供了 API 我遵循了 MSDN 中给出的代码 我什至参考了 stackoverflow 的设置机会状态 但是 当我运行以下代码时开放的机会它抛出错误指出 Lo
  • 具有多个值的 HashMap [重复]

    这个问题在这里已经有答案了 我想在java中实现具有多个值的哈希表 即 if sample is a hashmap sample put 1 1 sample put 1 2 and sample get 1 将返回 2 个值 我怎样才能
  • 从数据框中删除列中以“@”开头的单词

    我有一个名为 tweetscrypto 的数据框 我试图从 text 列中删除以字符 开头的所有单词 并将结果收集到新列 clean text 中 其余的单词应该保持完全相同 tweetscrypto clean text tweetscr
  • 为什么强命名程序集不能使用未签名的程序集?

    要对程序集 A 进行签名 您必须确保 A 使用的所有程序集 B C D 均已签名 然后是 B C D 使用的所有程序集 依此类推 我不明白这有什么安全好处 我认为它应该可以防止篡改 但是程序集 A 可以打开任何文件 并且这些文件可以被篡改
  • 如何查看 Word 文件是否受密码保护?

    我正在维护一个归档系统 该系统必须将各种文档格式转换为 tif 我的问题是受密码保护的 Word 文档 如果文档受密码保护 则 Word 会弹出一个响应 要求我输入密码 如果文档受密码保护 只要我可以告诉客户他需要对此采取措施 那就可以了
  • 如何使用 JavaScript 检查对象中是否存在值

    我在 JavaScript 中有一个对象 var obj a test1 b test2 如何检查 test1 是否作为值存在于对象中 您可以将对象的值转换为数组并测试字符串是否存在 它假设对象没有嵌套并且字符串是完全匹配的 var obj
  • 将鼠标悬停在 Firefox 中的输入自动完成功能时 Div 消失

    我编了一个JSFiddle 这是一个登录表单 将鼠标悬停在 登录 菜单上时出现 但是当将鼠标悬停在输入自动完成功能上时 登录表单会消失 我不希望出现这种情况 如何在不禁用输入自动完成的情况下保留登录表单 这只能用 css 来实现吗 div
  • 如何在 C# 中调整 Windows 窗体窗体的大小?

    我正在制作一个 Windows 窗体应用程序 我希望按下按钮后表单高度增加 我该怎么做呢 Use the Height财产 例如 this Height newHeight
  • 任何现有的 IoC 容器都可以动态创建惰性代理类吗?

    我研究不同的 DI 模式 现在我对惰性生命周期实现感兴趣 例如 我想编写一个代理类 将工厂隐藏在服务接口后面 任何现有的 IoC 容器 NET 都可以在运行时动态创建这种代理类吗 interface IService void Foo vo