0

我有许多典型的温莎城堡安装程序,例如:

public class StrategyInstaller : IWindsorInstaller
{
    #region IWindsorInstaller Members

    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Component.For<INavigationStrategy>()
                               .ImplementedBy<NavigationStrategy>()
                               .LifestylePerWebRequest());

我的问题是,当我处于调试模式和发布模式时,如何安装不同的(例如策略)?

(这适用于仅在发布环境中可用的依赖项)

谢谢

4

2 回答 2

0

如果是我,我不希望编译后的代码在调试和发布之间有所不同。这在推出您的发行版时可能会造成相当大的破坏,这是您第一次真正运行发行版二进制文件。话虽如此,您的观点是正确的,您有时需要实例化类的存根版本而不是真实版本。

这需要设置更多,但我建议您制作一个包含真实实现(例如连接到真实数据库)的程序集和另一个包含存根实现的程序集(例如返回硬编码或基于配置的数据库-像价值观)。然后有一个配置值告诉您的应用程序要加载哪个程序集。这样,真实实现和存根实现都可以在调试和发布模式下编译,并且您可以在两种环境中交换程序集。这对于测试生产中的问题也很有用,你想测试一些东西,但实际上并没有让它真正实现。

于 2012-10-14T18:15:41.803 回答
0

根据评论使用以下内容进行编辑:

#if DEBUG
    container.Register(Component.For<INavigationStrategy>()
                           .ImplementedBy<NavigationStrategy>()
                           .LifestylePerWebRequest());
#else
    container.Register(Component.For<INavigationStrategy>()
                           .ImplementedBy<DebugNavigationStrategy>()
                           .LifestylePerWebRequest());        
#endif
于 2014-01-29T22:32:55.350 回答