有没有一种方法可以使Simple Injector仅调用一次委托进行瞬态注册?

问题描述

我有一些条件注册,具体取决于配置设置。代码工作正常,但是在调试时,我注意到每次请求IDocumentService时都会调用该委托。

container.Register<IDocumentService>(() =>
{
    switch (Environment.UserConfiguration.RealDocumentPersistenceType)
    {
        case DocumentPersistenceType.sql:
        case DocumentPersistenceType.disk:
            return container.GetInstance<DocumentService>();
        case DocumentPersistenceType.IManage:
            return container.GetInstance<IManageDocumentService>();
        default:
            throw new ArgumentOutOfRangeException(nameof(Environment.UserConfiguration.RealDocumentPersistenceType),Environment.UserConfiguration.RealDocumentPersistenceType.ToString());
    }
},Lifestyle.Transient);

文档指出,只为“ 单个实例调用一次委托,这很有意义,但是有一种方法可以告诉SI尽管此注册是临时的,但每次都可以请求,返回第一次调用时使用的类型?

Simple Injector Delegate documentation

解决方法

只需将开关从注册中移出即可

name: exclinis
desc: exclude all ini files from comparison

def: include

f: \.ini$ ##file filt to exclude all .ini files
d: \\subdir$ ##filt for dir

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...