虽然这个问题看起来有点奇怪。我仍然在碰巧加入一个新项目。该项目大量使用温莎城堡 IoC。初始化后检查容器告诉我一些实现已注册为其他实现,LifeStyle.Transient而其他实现已注册LifeStyle.Singleton。他们的自定义引导代码搜索程序集并进行基于约定的注册,但没有提及生活方式。那么注册组件在生活方式上有何不同呢?温莎城堡有一些神奇的命名约定吗?例如:一对IFooManagerandFooManager将成为单身人士,而IFooandFoo将获得短暂的生活方式....(仅归功于 *Manager)。正如评论所要求的那样,这是在所有 /somehow enumerated/ 程序集上循环执行的核心注册: var assembly = Assembly.LoadFrom(fileName);
container.Register(Classes.FromAssembly(assembly).Pick()
.If(t => TypeIsInNamespaces(includeNamespaces, t) && GetInterfacesOfType(t, includeNamespaces).Any())
.WithService.Select((t, baseT) => GetInterfacesOfType(t, includeNamespaces)).Configure(c => c.Named(GetName(c.Implementation))));
3 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
所以,我终于遇到了一个解释这种行为的地方。
所以回答:不,温莎城堡没有自动的生活方式推断逻辑。
我的原因是:
他们确实使用了这些温莎城堡属性,人们可以将这些属性传播到实现(组件)中来说明他们的生活方式:
/// <summary>
/// Message Box factory.
/// </summary>
[Singleton]
public class MessageBoxFact : IMessageBoxFact
{
或者
[Transient]
- 3 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消