问题标签 [castle-windsor]

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 投票
2 回答
1091 浏览

.net - Castle Windsor:如何将组件连接到工厂属性而不是方法

我有以下组件

其中时间跨度应由属性 ISettings.MyTimerFrequency 提供。

如何在 Windsor 容器 xml 中连接它?我以为我可以做这样的事情:

但我收到一个错误,因为当工厂设施需要一个方法时,MyTimerFrequency 是一个属性。

这里有一个简单的解决方案吗?我是以错误的方式处理整个事情吗?

编辑:肯定有解决方案,请参阅下面的答案。

0 投票
1 回答
3262 浏览

c# - 在 Castle Windsor 组件注册的上下文中,什么是“ForwardedTypes”?

正如题主所说,真的!他们在做什么?

0 投票
1 回答
1577 浏览

c# - 当还有专门的服务类型时,使用 Castle Windsor 的流畅接口在装饰器链中注册组件?

我正在尝试为基于 IRepository 的数据访问实现装饰器链。我有一个进行数据访问的存储库(目前只是内存列表){1},我有一个进行验证的存储库 {2}。最重要的是,我有一个专门的存储库 IUsersRepository {3},它在基本接口上定义了另一个方法。我正在运行最新的主干修订版 5376。

我希望能够使用流利的接口注册我的组件 - 是否可以通过 XML 指定用作 innerRepo 的服务键?如果是这样,怎么做?(有关 XML 配置示例,请参阅Bitter Coder Decorator 教程)。我宁愿不需要依赖注册的顺序,除此之外。

我正在关注这篇博文

如果我向容器询问 IRepository {4},我已经能够让装饰器链工作;我看到我的 ValidatingRepository 方法在我的数据访问之前被调用。但是,如果我向容器询问 IUserRepository (我得到一个 InvalidCastException - 我想这是预期的,但它可以解决吗?),我无法让它工作。

我想避免在我的服务中使用一个装饰存储库和一个专用方法存储库;这让我觉得很容易出错。目前,我的专门方法都与通过不同标准获取实体有关 - 我想我可以让我的 Get 方法采用分离标准 - 这将允许我在我的界面上只有一个,并消除对专门的接口。除了我不允许,因为我们还没有决定绝对使用 NHibernate。也许如果我让 IRepo.Get 接受委托或 IQueryable?有任何想法吗?我整个早上都在努力解决这个问题,如果我有狭隘的视野也不会感到惊讶,而且还有一种不同的、更好的方法;欢迎任何建议!

{1} - {4} 可以在utilitybase的复制/粘贴工具中看到。

0 投票
2 回答
3139 浏览

.net - 如何从 Castle Windsor 配置中读取/解析属性

我有很多城堡 xml 配置,其中连接字符串等属性也保存在 .Net 配置部分下。

我希望能够使用容器读取属性,但看不到执行此操作的机制。

IE

...

显然,这些属性是存在的,因为它们存在组件依赖关系。我可以解析组件,但不能解析属性。

当然,我可以新建一个组件来读取注入它的属性城堡,或者我可以将所有属性包装在一个专门用于保存名称/值对的组件中。但我会认为有一个简单的 container.resolve("property.connectionstring") 表示法。

*编辑 Markdown 不是很好,上面是一个 xml 部分。

0 投票
1 回答
310 浏览

castle-windsor - 温莎城堡:如何在 xml 配置中使用类型作为构造函数属性?

我有以下内容:
TypeUser:ITypeUser
{
public TypeUser(Type usedType){..}
}

如何在 Windsor config xml 中配置 Type 参数?

0 投票
2 回答
291 浏览

c# - C# 代理和 var 关键字

这个问题与我以前的帖子有关。基本上,我想将 DAO 注入一个实体,即

在这里,如果我的 DAO 中有自定义方法,那么我基本上必须将它们包装在实体对象中。因此,如果我有一个 IUserDAO.Register() 我将不得不创建一个 User.Register() 方法来包装它。

更好的是创建一个代理对象,其中来自 DAO 的方法动态分配给用户对象。所以我可能有这样的东西:

这意味着我可以将 User 实体保持为一个适合通过网络传输数据的非常愚蠢的类,但也可以神奇地给它一堆 DAO 方法。

不过,这远远超出了我的舒适区,我想知道我需要做什么才能做到这一点?我可以使用 Castles 动态代理吗?C# 编译器是否也能够处理这个问题并了解动态添加的方法?

如果这是胡说八道,请随时告诉我。

编辑:

我们需要做的是在编译时以某种方式将 DAOProxyService.Create() 声明为返回一个 User 对象。这可以通过泛型来完成。

这不完全正确,我想要返回的不是 User 对象,而是具有动态添加的 UserDAO 方法的 User 对象。由于此类在任何地方都没有定义,因此编译器将不知道该怎么做。

我本质上返回的是一个新对象,它看起来像:用户:IUserDAO,所以我想我可以根据需要进行转换。但这似乎很混乱。

看起来我正在寻找的是类似于这个:Mixins

0 投票
5 回答
2111 浏览

asp.net-mvc - ASP.NET MVC Beta 1:DefaultModelBinder 在不相关的请求之间错误地保留参数和验证状态

当我使用默认模型绑定将表单参数绑定到作为操作参数的复杂对象时,框架会记住传递给第一个请求的值,这意味着对该操作的任何后续请求都会获得与第一个请求相同的数据。参数值和验证状态在不相关的 Web 请求之间保持不变。

这是我的控制器代码(service代表对应用程序后端的访问):

我的 .aspx 视图(强类型为ViewPage<RunTime>)包含如下指令:

这使用了DefaultModelBinder该类,该类旨在自动绑定我的模型的 properties

我点击页面,输入有效数据(例如时间 = 1)。该应用程序正确保存了时间 = 1 的新对象。然后我再次点击它,输入不同的有效数据(例如时间 = 2)。但是,保存的数据是原始数据(例如时间 = 1)。这也会影响验证,所以如果我的原始数据无效,那么我以后输入的所有数据都被认为是无效的。重新启动 IIS 或重建我的代码会刷新持久状态。

我可以通过编写自己的硬编码模型绑定器来解决这个问题,下面显示了一个基本的简单示例。

我错过了什么吗?我不认为这是浏览器会话问题,因为如果在一个浏览器中输入第一个数据而在另一个浏览器中输入第二个数据,我可以重现该问题。

0 投票
1 回答
3491 浏览

.net - .NET 中的 Castle、AOP 和日志记录

是否有任何关于使用 AOP、Castle 和登录 .Net 应用程序的教程或示例程序?我已经找到了一些碎片,但我正在寻找更多的东西来帮助我形成更完整的画面。

谢谢,-布赖恩

0 投票
4 回答
322 浏览

.net - DI-类型类型的动态参数,其中类型是父对象类型

我有一个依赖项,需要将其注入我的一个类中。这种依赖将是生活方式Transient。它又具有 type 的依赖关系Type。这个类型应该是原始类的类型。我只是想知道是否有人知道我将如何进行此注册。

参见示例:

现在我知道我可以随时打电话Container.ResolveCustomer然后Register手动注入。但是我需要注入Register我的大部分课程,所以这并不是那么可行。因此,我需要一种通过 config 或通过container.Register.

0 投票
2 回答
4105 浏览

castle-windsor - 使用 Windsor 注入应用程序设置

如何使用 Windsor 容器将 appSettings 条目的值(来自 app.config 或 web.config)注入服务?如果我想将 Windsor 属性的值注入到服务中,我会这样做:

但是,我真正想做的是#{importantIntegerProperty}从应用程序设置变量中获取表示的值,该变量可能定义如下:

编辑:澄清;我意识到这在 Windsor 中是不可能的,sliderhouserules所指的David Hayden 文章实际上是关于他自己的(David Hayden 的)IoC 容器,而不是 Windsor。

我肯定不是第一个遇到这个问题的人,所以我想知道其他人是如何解决这个问题的?