问题标签 [windsor-facilities]

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 回答
131 浏览

castle-windsor - 缺少 WcfFacility

我正在寻找应该在 Castle.Facilities.WcfIntegration 中的 WcfFacility。

情况有变化吗?它在哪里?我有最新的城堡(3.1 版)。

问题与此链接有关:

城堡 wcf 集成

0 投票
1 回答
1706 浏览

inversion-of-control - 如何使用代码在 Castle Windsor v3+ 中添加设施配置?

在 Castle Windsor v3+ 中,该IWindsorContainer.AddFacility<T>(string idlnConfiguration)方法已被弃用。在旧版本中,您可以使用此方法通过调用IConfigurationStore.AddFacilityConfiguration(string key, IConfiguration config)“idlnConfiguration”和“key”在调用中相同的位置来添加动态配置。

例如:

在 Windsor 3 中推荐的执行此操作的方法是什么?ObsoleteAttribute 上的消息指向使用container.AddFacility<T>(),但我看不出如何。

0 投票
2 回答
1301 浏览

c# - Castle.Windsor:3.1 中工厂和拦截器的变化?

以下代码在 Castle.Windsor 2.5.3 中按原样通过,但在升级到 3.1.0 后失败

异常是 InvalidProxyConstructorArgumentsException,它指出“无法实例化类的代理:测试。找不到无参数的构造函数。”

在我的真实代码中,Test 是一个使用工厂方法构建并注入到存储库中的 MongoDatabase。

在我的真实代码中,我还使用 AbstractFacility 的继承者来注册拦截器。这样我就不必为每个组件注册拦截器。两种形式的拦截器使用似乎在以后的解决方案中都以相同的方式工作/失败(在 2.5.3/3.1.0 中)。以下是该设施的简化版本供参考:

我查看了 Castle.Windsor 源代码,抛出的代码期望在给定的类周围包装一个代理,这就是它寻找无参数构造函数的原因。但是在 2.5.3 中,我认为代理生成代码从未被执行,并且容器(在我看来是正确的)解析为 Test/MongoDatabase 的非代理版本

所以我猜有两个问题:1)发生了什么变化?2)如何在不为工厂方法解析的对象生成代理的情况下保留我的拦截器注册?或者我猜想如何使用组件的工厂方法生成代理......

0 投票
1 回答
673 浏览

castle-windsor - 温莎城堡设施与 Nancy Windsor Bootstrapper 配合得不好

我在尝试从 Nancy 0.7 升级到 0.12 时遇到了一个奇怪的问题。以前我正在注册一个工具来为我的引导程序中的所有服务进行日志记录:

LoggingFacility 如下所示:

不幸的是,自从升级到 0.12/Castle 3.1 后,以下行WindsorNancyBootstrapper.RegisterTypes导致了一些问题

基本上,Castle 试图围绕 Func 创建一个动态代理。如果此注册触发了我的设施订阅的事件,这会很好,但它不会。然而拦截器似乎已经注册了。

尝试创建代理时,它显然失败了,因为 MulticastDelgate(IL 的 Func<> 的父级)被密封:TypeLoadException 无法从程序集 'DynamicProxyGenAssembly2,Version=0.0.0.0,Culture=neutral 加载类型'Castle.Proxies.Func`1Proxy' , PublicKeyToken=a621a9e7e5c32e69' 因为父类型是密封的。

我不确定在这里做什么,有人对设施和南希 0.12 有任何经验吗?

0 投票
1 回答
4618 浏览

castle-windsor - 带有 TypedFactoryFacility 的 Castle.MicroKernel.ComponentNotFoundException

使用 TypedFactoryFacility 时,我在解析 ITcpServer 时遇到了一些问题。Windsor 似乎没有找到合适的组件从工厂返回该接口。我的案例的具体情况是接口 ITcpServer 是非通用的,而实现它的类都是通用的。

运行时抛出以下代码:

未处理的异常:Castle.MicroKernel.ComponentNotFoundException:在 Castle.Facilities 的 Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(类型服务、IDictionary 参数、IReleasePolicy 策略)中找不到支持服务 ConsoleApplication1.StandardTcpServer`1 的组件.TypedFactory.TypedFactoryComponentResolver.Resolve(IKernelInternal kernel, IReleasePolicy scope) at Castle.Facilities.TypedFactory.Internal.TypedFactoryInterceptor.Resolve(IInvocation invocation) at Castle.Facilities.TypedFactory.Internal.TypedFactoryInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy。
Castle.Proxies.ITcpServerFactoryProxy.Create[T] 的AbstractInvocation.Proceed() (String serverType, T something)

编码:

解决问题的任何帮助将不胜感激。

0 投票
1 回答
316 浏览

c# - WindsorContainer在使用工厂时能否通过解析树传递对象

我有这样的问题:

我所有的视图模型(..VM)都需要是瞬态的。而且我需要 childVM1 获得与工厂相同的 otherVM 实例。

我尝试将 BaseVm 注册为 ScopedLifestyle,并在范围内解析时手动实现工厂并传递实例。但是在解析时我仍然得到了另一个虚拟机的新实例。

我在这里遗漏了一些明显的东西吗?

凯蒂尔。

0 投票
0 回答
185 浏览

c# - WindsorContainer TypedFactory 如何将参数传递给间接对象

我知道 TypedFactory 工具只会将给定的参数传递给它正在解析的对象。但是有没有办法将相同的参数传递给所有正在解析的间接对象?

我一直在尝试使用定义为的自定义范围来做到这一点

我有以下类结构:

我在 windsorcontainer 中注册它们:

我正在使用它:

第一遍有效,但我希望 ScopeAccesor 在 _contaier.BeginScope() 存在 using 块时被释放。这不会发生,第二遍将获得与第一遍相同的参数。

0 投票
2 回答
1972 浏览

castle-windsor - Castle Windsor,根据一些上下文参数选择服务实现

使用 Castle Windsor 3.2,我需要根据上下文参数动态解决服务实现。这是我想做的基本示例:

我有一个服务 IFoo

由 2 个不同的类 Foo1 和 Foo2 实现

我想用数字作为参数调用城堡温莎解析方法,并根据我想要 Foo1 或 Foo2 对象的数字:

我尝试了几种可能的解决方案,但由于缺少 Castle Windsor 文档和示例,我真的很困惑,此外,大多数示例都不是最新的并且使用的是过时的 API。

因此,我看到了一些使用以下概念的示例,但它们似乎都不是我的要求:

  1. 处理程序选择器
  2. 类型化工厂设施
  3. 使用工厂方法
0 投票
1 回答
513 浏览

logging - 如何使用 Castle Windsor Factory 创建多个命名记录器?

这个问了差不多一样的问题。

我目前在 MVC 应用程序中使用城堡日志记录工具,并且当前在 global.asax 中加载单个命名记录器,这使得分隔具有相同级别的多个日志文件变得容易,而没有将相同的日志记录输出到多个文件. LoggerToMatch 是我所追求的过滤,我还有一个自定义 log4net 渲染,我目前使用单个命名记录器,我需要不同的命名记录器使用不同的自定义渲染。

我认为 Krzysztof的答案是我所追求的,但我不知道这些参数是什么 k,c。

如果有一个看起来像这样的 log4net 配置文件,我将如何使用 Windsor 重新注册两个命名记录器?到目前为止,在注册设施时,我一直在告诉 Windsor 一个名为 logger 的信息。

0 投票
1 回答
353 浏览

wcf - Windsor Castle 3.0 使用 IContributeComponentModelConstruction 将生活方式设置为 WcfPerOperation

在 Windsor 2.1 中,当代码在 wcf 上下文中执行时,我有以下代码将所有服务的生活方式更改为 PerWcfOperation:

其中 CustomLifestyleLevelingContributeComponentModelConstruction 是:

我的问题是PerWcfOperationLifestyle已从 Windsor 3.0 中删除。谁能告诉我如何使用 Windsor 3.x 实现相同的目标?