为温莎城堡中的所有接口实现注册拦截器

2024-03-20

我对温莎城堡相当陌生,特别是使用拦截器,我想知道是否可以在特定接口的所有实现中注册拦截器,而无需依次指定每个实现。例如,我有一个名为IComponent这将由许多班级实施。我有一个ComponentInterceptor编写的类在这些类执行特定方法时对其进行操作。我想做这样的事情:

_container.Register(
 Component.For<IComponent>()
                  .Interceptors("ComponentInterceptor")
                  .LifestyleSingleton())

而不必这样做:

     _container.Register(
      Component.For<IComponent>()
                .ImplementedBy<ComponentA>()
                .Interceptors("ComponentInterceptor")
                .LifestyleSingleton()),
    _container.Register(
      Component.For<IComponent>()
                .ImplementedBy<ComponentB>()
                .Interceptors("ComponentInterceptor")
                .LifestyleSingleton())

我找到了另一种方法,我想为所有正在注册的组件注册这个拦截器,并希望做到这一点。为此,我遵循本文 http://docs.castleproject.org/Windsor.ComponentModel-construction-contributors.ashx并创建了一个像这样的新类:

public class MyContributeComponentConstruct : IContributeComponentModelConstruction
{
    public void ProcessModel(IKernel kernel, ComponentModel model)
    {
        if (model.Services.Any(s => s == typeof(IComponent)))
        {
            model.Interceptors.Add(InterceptorReference.ForType<ComponentInterceptor>());
        }
    }
}

然后将这个贡献添加到 Castle Windsor 容器中

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

为温莎城堡中的所有接口实现注册拦截器 的相关文章

  • 如何在Castle.DynamicProxy中使用IInterceptor?

    我写了一个这样的例子 简单计算器类 public class Calculator public int Add int a int b return a b 实现了DynamicProxy提供的 IInterceptor Serializ
  • Java / Kotlin / Spring Boot。如何在异常发生时自动获取参数值?

    考虑到我们正在使用Kotlin Spring Boot 注释等相关库 如果我们的代码抛出异常 我们如何在异常发生时自动检索方法参数值 我们可以使用 AOP Spring 拦截器或其他技术来做到这一点吗 我们希望用它来丰富我们的错误消息 以便
  • Angular 5拦截器 - 在第一个拦截器重试失败后仅调用第二个拦截器

    我正在构建一个 Angular 5 应用程序 其中有 2 个拦截器 重试失败的 504 请求之一 另一个向用户显示有关失败请求的错误消息 我希望第二个拦截器仅在错误不是 504 或错误为 504 并且已被第一个拦截器重试时被调用 我创建了一
  • 删除温莎城堡 3 中的组件

    我正在温莎城堡中使用 TypedFactoryFacility 来允许我使用接口工厂依赖项注入 当不需要这些组件时 应该为 Null 我在自动委托工厂将 Func 注入自动解析的组件时遇到问题 我想保留 TypedFactoryFacili
  • Android Retrofit 2,用于编辑响应的 addInterceptor 和 addNetworkInterceptor 之间的差异

    我一直在尝试实现一个拦截器 OkHttp 3 2 和改造 2 用于在作为响应返回之前编辑 JSON 响应 我们请求数据的服务器根据成功或错误返回不同的数据 这使得映射对象变得困难 我试图通过将拦截器添加到 Retrofit 作为 Netwo
  • MVC 中的 IoC Castle Windsor 路由问题

    我已经在我的 mvc 应用程序中设置了温莎城堡 一切都很好 除了它还捕获链接或图像类型的路由 问题是 在退出控制器并生成视图之前 GetControllerInstance 是以 null 类型执行的 只要页面上有如下链接 就会发生这种情况
  • 温莎城堡延迟加载服务

    有时 我发现自己处于这样的情况 只有在满足特定条件时才需要解决服务 例如 用户可以选择发送电子邮件或短信通知 我想根据用户的选择来延迟加载电子邮件或短信服务 这样我就不必同时加载它们并浪费资源 例如 如果用户有 10 个选项怎么办 我遇到的
  • 如何在与 Castle Windsor DI 容器相同的上下文中重用瞬态依赖项

    如果我有以下设置 当在同一上下文中创建对象时 如何将容器配置为使用相同的数据库 public class Database public interface IRepository Database Database get public
  • 如何将参数传递给 HttpInterceptor?

    我正在使用 Angular 4 3 1 和 HttpClient 有一个 HttpInterceptor 来设置一些标头 在某些 http get 请求中 我需要设置不同的标头 无论如何 我可以将一些参数传递给该特定 HttpRequest
  • 在 Axios 中自定义日期序列化

    默认情况下 当 JavaScript 对象包含 Date 对象时 Axios 将其序列化为 UTC 这意味着传输的时间是使用时区进行转换的 这不适用于我的用例 我需要将没有时区转换的时间发送为 UTC 我实现了一个基于的自定义序列化器 15
  • castle IOC - 解决循环引用

    关于我的 MVP 实现的简单问题 目前我有下面的代码 其中演示者和视图都是通过容器解析的 然后演示者调用 View Init 将自己传递给视图 然而 我想知道是否有一种方法可以让容器修复我的循环引用 视图 gt 演示者 演示者 gt 视图
  • Akka 通过可堆叠行为拦截接收

    Akka 和 Scala 新手 请根据需要随意编辑问题 以便清楚地表达我在 Scala 和 Akka 领域的意图 在展示代码片段之前 这是我想要解决的问题 我本质上想开发一个通用模块 供我的团队在使用 Akka Actor 开发应用程序时使
  • 在 Web 应用程序中何处以及如何使用拦截器?

    我最近对拦截器概念很感兴趣 我知道这个概念在 NHibernate Entity Framework 等许多库中都有使用 但我对如何在 ASP NET MVC Web 应用程序中使用这个概念感兴趣 在 Mvc Web 应用程序中什么地方有用
  • 使用 Castle Fluent 接口注册拦截器

    我正在尝试实施通过拦截器 无法弄清楚如何通过流畅的机制注册接口 我看到一个 Component For
  • 如何在 Guice 中定义方法拦截器的顺序?

    有时需要知道 Guice 中拦截方法调用的方法拦截器的顺序 一个简单的示例场景是使用 guice persist 提供的 Transactional 方法拦截器和自定义 Retry 方法拦截器 重试拦截器必须在事务拦截器外部运行 以确保重试
  • 如何使用字符串参数来区分命名空间或类型?

    我需要在 NET 2 0 C 脚本中获取一些 JSON 输出 目标是使用一种方法来输出我需要的所有 JSON 提要 所有模型都具有相同的 id 和 name 属性 因此我有大约 15 个命名空间 它们在这里具有相同的部分 简而言之 因为我使
  • Castle Windsor - 如何根据构造函数参数解析组件

    假设我有一个这样的组件 public class MyComponent public MyComponent string name 我基本上希望在解析它时将提供的构造函数参数作为组件标识符的一部分 如果您从未使用该组参数解决它 它将实例
  • ASP.NET MVC 4 RC 与温莎城堡

    我正在查看 ASP NET MVC 4 RC 但找不到 DefaultHttpControllerFactory 甚至 IHttpControllerFactory 来允许我选择的 IoC 容器 Castle Windsor 连接到 Web
  • 有没有办法在温莎城堡显式注册开放通用装饰器

    我在我正在开发的项目中经常使用温莎城堡 并使用一些装饰器 所以我的安装程序中可能有类似的东西 Component For
  • axios拦截器重试发送FormData

    我正在尝试为包含以下内容的请求创建 重试 功能FormData作为数据 当 JWT 令牌过期时会发生重试 我的第二个请求 重试请求 不包含任何数据 想法 const axiosInstance axios create Before eac

随机推荐

  • Flutter Doctor CocoaPods 未安装

    When I run Flutter doctor 我尝试运行 sudo gem install cocoapods 来安装它 但仍然存在同样的问题 请注意 我正在开发通道中使用最新的 flutter 版本运行 xcode 12 有任何想法
  • 将文件添加到 git 的 stage 不执行任何操作并且无法提交

    我陷入了一种奇怪的情况 在我的一个分支中 web config 文件无法添加到舞台上 的输出 git add path to web config git status 与添加文件之前相同 Web config 似乎需要修改 并且尚未添加到
  • 无法传递给 C 代码 - 虚拟环境' aria-label='对象类型 无法传递给 C 代码 - 虚拟环境'> 对象类型 无法传递给 C 代码 - 虚拟环境

    我正在使用 Mac Anaconda 我尝试使用加密货币的 AES 然而 我面临一个奇怪的问题 我只想执行一行简单的代码 obj AES new This is a key123 AES MODE CBC This is an IV456
  • MVC 相当于 ASP.NET 按钮单击事件

    我需要创建一个与 ASP NET 中的按钮单击事件等效的页面 在我的页面上 当用户单击按钮时 我需要处理一些信息 如果发生错误 则显示错误页面 但如果成功 我需要显示成功页面 我是 MVC 的新手 我不知道如何解决这个问题 这就是我到目前为
  • C# 和箭头键

    我是 C 新手 正在现有应用程序中做一些工作 我有一个 DirectX 视口 其中包含我希望能够使用箭头键定位的组件 Currently I am overriding ProcessCmdKey and catching arrow in
  • 需要建议在 Javascript 中应用 .disabled

    我运行 Woocommerce 网站并希望禁用结帐页面上的特定输入 Woocommerce 可以按国家 地区设置运输方式 我将默认国家 地区设置为韩国 并且显示韩国的运输选项 但是 如果我选择美国 运输方式将看到根据美国的运输选项 因此 默
  • 在闪亮的仪表板中从 R 访问 javascript 对象

    SO 有很多闪亮的问题询问如何在 UI 中使用输入值 一般答案是使用updateSelect 家庭或使用renderUI 我知道基本上不可能从输入列表中访问值 input 在 UI 中 因为输入列表仅传递到服务器 因此不存在于 UI 环境中
  • 我可以在 Netlify 中通过 Create-React-App 使用构建环境变量吗?

    如何在 Netlify 中通过 Create React App 使用构建环境变量 You CAN在你的环境变量中使用create react app在 Netlify 上 但 Create React App 的所有构建限制仍然适用 默认
  • Angular 有像 extjs 那样的弹性布局吗?

    ExtJS 有一个非常有用的布局机制 称为 Flex 它的工作原理是将行或列中的所有内容相加 然后使用弹性值除以所有弹性值的总和来分配空间 这会产生如下所示的布局 红框是水平盒布局 块 E 和 F 的给定弹性值之和为 3 因此 E 为屏幕宽
  • sed 中“保持空间”和“模式空间”的概念

    我对 sed 中的两个概念感到困惑 保留空间和模式空间 有人可以帮忙解释一下吗 这是手册的一个片段 h H Copy append pattern space to hold space g G Copy append hold space
  • Python 从同一包中的文件导入 __init__.py 中的类

    我觉得我应该知道这一点 因为我已经用 Python 编程这么久了 但我一直在不断学习关于这种精美语言的新知识 我的问题 很可能是重复的 但我无法找到相同的案例 是这样的 我有这样的文件布局 websocket init py client
  • 带有 QML 的 FbxGeometryLoader

    我想将 fbx 文件导入到我的Scene3D https doc qt io qt 5 11 qml qtdatavisualization scene3d html 通过QMesh https doc qt io qt 5 11 qt3d
  • Linux下与CashCode纸币接受器通信

    我已经实现了 CCNET 协议 以便通过 Linux 上的软件与 CashCode 纸币接受器进行通信 最初 我花了很多时间试图弄清楚为什么设备不响应 我发送的命令 使用反复试验的方法 我找到了为串行端口设置以下选项的解决方案 stty F
  • 我可以在不注销的情况下获得更新的 emailVerified 吗?

    我的注册流程如下 用户填写详细信息并注册 收到发送验证电子邮件 该用户登录后 但看到一个屏幕 要求进行电子邮件验证 用户验证他们的电子邮件并返回应用程序 在这个阶段我怎样才能获得新的用户数据emailVerified字段而不注销用户 我期望
  • Linux:大型 int 数组:mmap 与查找文件?

    假设我有一个数据集 它是存储在 4TB HDD ext4 文件系统上的文件中的 1e12 32 位整数 4 TB 数组 考虑到数据很可能是随机的 或者至少看起来是随机的 pseudo code for long long i 0 i lt
  • ElasticSearch 聚合可以做 SQL 可以做的事情吗?

    在 Elasticsearch 中 我需要获取从最高到最低出现最频繁的颜色的频率和数量 如果我有这样的数据 id name 1 blue 2 blue 3 green 4 yellow 5 blue 6 yellow 7 purple 8
  • 我可以将服务注入到 Grails 的过滤器中吗?

    我有一项服务可以在会话中获取和设置用户 如果有登录用户 我想将一些用户信息传递给每个视图 并认为过滤器是最好的方法 这样我就不必在每个控制器 操作中重复该信息 当我运行该应用程序时 出现以下错误 Error creating bean wi
  • 如何在所有字段名称中过滤 C# dataGridView?

    I see 在这个视频中 http www youtube com watch v 2h7C IL FB8添加文本框并让它驱动 datagridView 的过滤非常容易 问题在于该视频中 您似乎必须指定要根据哪一列进行过滤 RowFilte
  • 错误:“getGamesClient() 未定义” - 尝试运行 Google 的示例游戏

    我正在尝试运行 Google Game Play Services 示例here https github com playgameservices android samples tree master 8BitArtist 我已按照指示
  • 为温莎城堡中的所有接口实现注册拦截器

    我对温莎城堡相当陌生 特别是使用拦截器 我想知道是否可以在特定接口的所有实现中注册拦截器 而无需依次指定每个实现 例如 我有一个名为IComponent这将由许多班级实施 我有一个ComponentInterceptor编写的类在这些类执行