温莎城堡是否有一个命名约定来自动判断生活方式?

虽然这个问题看起来有点奇怪。我仍然在碰巧加入一个新项目。

该项目大量使用温莎城堡 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))));


慕田峪9158850
浏览 84回答 3
3回答

呼唤远方

要按要求回答您的问题(因为可以回答)-不,温莎城堡没有神奇的命名约定来暗示生活方式。

一只名叫tom的猫

处理这个问题的最佳方法是将您的注册划分为安装程序,并按照约定使用注册来显式注册某些具有所需配置的组件组。例如:container.Register(Classes.FromThisAssembly() &nbsp;&nbsp;&nbsp;&nbsp;.InSameNamespaceAs<FooManager>() &nbsp;&nbsp;&nbsp;&nbsp;.WithService.DefaultInterfaces() &nbsp;&nbsp;&nbsp;&nbsp;.LifestyleTransient());这样一来,正在发生的事情就很明确了。

阿晨1998

所以,我终于遇到了一个解释这种行为的地方。所以回答:不,温莎城堡没有自动的生活方式推断逻辑。我的原因是:他们确实使用了这些温莎城堡属性,人们可以将这些属性传播到实现(组件)中来说明他们的生活方式:/// <summary>/// Message Box factory./// </summary>[Singleton]public class MessageBoxFact : IMessageBoxFact{或者[Transient]
打开App,查看更多内容
随时随地看视频慕课网APP