C# 无法注入IEnumerable<;T>;简易喷油器

C# 无法注入IEnumerable<;T>;简易喷油器,c#,simple-injector,C#,Simple Injector,我有一个名为IConfiTab的接口,它将在我的代码的不同位置实现 我希望代码能够做到这一点 // Add all IConfig instances as user controls to the settings tabs if they are // configured to do so foreach (var configTab in _configTabs) { if (configTab.ShowTab) { //add Config Tab i

我有一个名为IConfiTab的接口,它将在我的代码的不同位置实现

我希望代码能够做到这一点

// Add all IConfig instances as user controls to the settings tabs if they are 
// configured to do so
foreach (var configTab in _configTabs)
{
    if (configTab.ShowTab)
    {
        //add Config Tab instance to GUI here
    }
}
_configTabs应该是找到的每种类型的IConfigTab实例的某种集合

我使用以下代码尝试注册所有找到的IConfigTab类型

// Register all IConfigTabs we find in the current runtime 
var iconfigTypes = 
    from nd in AppDomain.CurrentDomain.GetAssemblies()
    from type in nd.GetExportedTypes()
    where !type.IsAbstract
    where typeof(IConfigTab).IsAssignableFrom(type)
    select type;

foreach (var iconfigType in iconfigTypes)
{
    container.Register(iconfigType);
}

container.Verify();

var configTabs = container.GetInstance<IEnumerable<IConfigTab>>().ToArray();
//注册当前运行时中找到的所有IConfigtab
变量iconfigTypes=
从AppDomain.CurrentDomain.GetAssemblys()中的nd开始
从nd.GetExportedTypes()中的类型
哪里类型.IsAbstract
其中typeof(IConfigTab).IsAssignableFrom(type)
选择类型;
foreach(iconfigTypes中的变量iconfigType)
{
容器。寄存器(iconfigType);
}
container.Verify();
var configTabs=container.GetInstance().ToArray();
问题是configTabs的大小为0

这可能吗?我希望Simple Injector返回刚刚找到答案的类型为
IConfigTab

的每个类的实例

// Simple Injector v3.x syntax
container.RegisterCollection(typeof(IConfigTab),
    AppDomain.CurrentDomain.GetAssemblies());

// Simple Injector v2.x syntax
// Register all IConfigTabs we find in the current runtime 
var iconfigTypes =
    from assembly in AppDomain.CurrentDomain.GetAssemblies()
    from type in assembly.GetExportedTypes()
    where !type.IsAbstract
    where typeof(IConfigTab).IsAssignableFrom(type)
    select type;

container.RegisterAll(typeof(IConfigTab), iconfigTypes);
您必须使用
RegisterCollection
,指定服务类型(在本例中为
IConfigTab
),并向其传递实现类型列表