标签: castle-windsor-3

如何在温莎城堡中“开始范围”特定的自定义范围生活方式?

我创建了一个自定义范围访问器(它只是返回 DefaultLifetimeScope),以便能够添加自定义范围的生活方式。然后该组件被注册为

Component
   .For<..>
   .LifestyleScoped<CustomScope>()
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何实际启动新的 CustomScope 范围/生命周期。该文档显示使用开始一个新范围

using (Container.BeginScope()) {
   // ..
}
Run Code Online (Sandbox Code Playgroud)

但我的目标是创建/开始/启动特定范围,而不是通用LifestyleScoped()注册。新的作用域应该只影响显式注册到 CustomScope 的组件;不是通用范围组件或针对其他范围生活方式注册的组件。

开始(我的自定义范围)范围/生命周期的过程是什么?

请链接至相关文档;正如我所问,因为我无法轻易找到它。该代码使用Castle Windsor 3.3。


背景:

我来自 Autofac,正在寻找相当于每个匹配生命周期范围的实例来在 EF 上下文上建立 UoW。“每个请求”可能有多个 UoW,并且不同的存储库可能有不同的 UoW - 我还希望将来支持嵌套。

虽然有很多文章讨论创建 UoW 模式,但它们[全部]都与某些上下文(例如 HTTP 或 WFC 请求)绑定(错误地,IMOHO) - 而这不是这个问题的目的。我特别感兴趣的是如何启动一个自定义作用域,该作用域向下流过调用图并“存在于”using 块内。


笔记:

BoundTo()(和LifestyleBoundTo()/ )生活方式LifestyleBoundToNearest()与对象图相反(并且需要改变类型),并且切换到这样的生活方式严格来说并不是这个问题的解决方案/答案。但是,如果能为他们提供一个好的案例..

scope castle-windsor using-statement inversion-of-control castle-windsor-3

5
推荐指数
1
解决办法
3360
查看次数

在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

castle-windsor-3

3
推荐指数
1
解决办法
835
查看次数