问题标签 [castle-windsor-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
401 浏览

c# - Castle Windsor 使用组件 ID/名称作为参数

我有一个项目,我使用 Castle Windsor 进行依赖注入,更具体地说,我使用的是 XML 配置,因此可以根据参数以不同的方式运行公共服务。

例如(真的很简化):

在运行时,我们解析名为 Processors 的组件,并依次遍历所有调用每个项目的项目。

正如您在上面的示例中看到的,我们在每个处理器上都有一个名为 id 的参数,这主要用于日志记录,并且对于跟踪哪个处理器有问题(并通过代理配置)非常有用。理想情况下,如果我可以重用组件配置中的 id(减少配置),那就太好了。

关于如何做到这一点的任何想法?

0 投票
1 回答
552 浏览

c# - Castle Windsor PerWebRequest 对象注入 Singleton 对象而不在字段中引用它

我们创建了一个单例对象(SsoSettingsProvider),我们在其中注入具有生活方式 PerWebRequest 的对象(IReservationService 在我们的示例中是 WCF 客户端)。在构造函数中,我们使用这个对象来获取一些数据,并将这些数据放在一个私有字段中。

如果我们看看温莎城堡可能的生活方式不匹配,它会说:

“具有生活方式 Singleton 的组件 'SsoSettingsProvider / ISsoSettingsProvider' 依赖于具有生活方式 PerWebRequest 的'后期绑定 IReservationService' 这种依赖关系通常是不希望的,并且可能导致各种错误。”

该信息说只有可能性,但在这种情况下,我认为这不是问题,因为注入的对象没有在字段中引用,因此可以进行垃圾收集。我对吗 ?

0 投票
1 回答
296 浏览

inversion-of-control - 如何自动向 Castle Windsor 注册开放的通用接口?

我需要自动将我的开放通用接口注册到它的实现类我的接口类似于 IIntegrationEventHandler

我的处理程序将是这样的

Castle Windsor 中是否有任何通用方法可以在不手动对每个处理程序进行注册的情况下进行此类注册,我搜索了很多但没有注意到我没有基本处理程序类,只有通用接口和实现类

0 投票
1 回答
25 浏览

dependency-injection - 在温莎城堡命名批量注册

在我的项目中,我有接口IProcess和许多实现这个接口的类。我需要注册所有这些实现。以下代码对我来说工作正常:

但是,如果我有很多实现,使用这种方法进行注册是很乏味的。因此,我正在寻找一种注册方法来按名称在给定程序集中注册 IProcess 的所有实现。应该用于注册密钥的名称只是类名。

有人可以给我提示在哪里寻找吗?

0 投票
1 回答
463 浏览

castle-windsor-3 - WindsorContainer 构建过程中出现 MethodAccessException 的原因是什么?

WindsorContainer 构建过程中出现 MethodAccessException 的原因是什么?

System.MethodAccessException: Attempt by method 'Castle.MicroKernel.SubSystems.Configuration.DefaultConfigurationStore..ctor()' to access method 'System.Collections.Generic.Dictionary`2<System.__Canon,System.__Canon>..ctor()' failed. at Castle.MicroKernel.SubSystems.Configuration.DefaultConfigurationStore..ctor() at Castle.MicroKernel.DefaultKernel.RegisterSubSystems() at Castle.MicroKernel.DefaultKernel..ctor(IDependencyResolver resolver, IProxyFactory proxyFactory) at Castle.MicroKernel.DefaultKernel..ctor() at Castle.Windsor.WindsorContainer..ctor()

.NET 4.7.2 城堡.温莎 3.3.0

0 投票
0 回答
31 浏览

c# - 是否可以单独命名“Forwards”和/或不同于 Castle Windsor 中的“For”服务?

我有一个使用泛型的服务接口。该接口有多种实现。这些实现还使用泛型并为封闭的服务接口提供多个具体组件。对于(极其简化)示例:

然后在温莎城堡注册:

有没有办法给每个Forward's 提供备用名称?这个问题可以解决,我猜,通过Foward用自己的名字单独注册每个人,但如果能够做这样的事情会很好:

(在这个简化的问题和示例的范围之外,但我可能也可以使用IGenericServiceStrategy和/或IGenericImplementationMatchingStrategy代替注册每个单独的排列来实现整体设计目标,但我受到时间限制,因此能够单独命名前锋将是伟大的)。

有问题的代码使用的是 Castle Windsor v3.3.0。