针对Unity Container中相同接口的多个类

时间:2014-07-24 08:31:04

标签: c# unity-container ioc-container

我有一个接口“IRunAtStartup”,它在几个类中实现。接口有一个方法“Execute”,需要对应用程序启动时的所有类执行。

在编译时,我不知道实现接口的类的数量,因此这确实需要以通用的方式编写。

为IOC和以下使用Unity是我尝试了2种方法的两种方法

1)抛出运行时错误:

container.RegisterTypes(runAtStartUp, WithMappings.FromAllInterfaces);

2)在for循环中的register命令中抛出一个编译错误 - “无法解析类型”。我对Unity世界比较陌生,并怀疑我在这里错过了一些基本问题。

IEnumerable<Type> runAtStartUp = typeFinder.FindClassesOfType<IRunAtStartup>(true);

foreach (var type in runAtStartUp)
{
    container.RegisterType<IRunAtStartup, type>(type.AssemblyQualifiedName);
}
foreach (var task in container.ResolveAll<IRunAtStartup>())
            {
                task.Execute();
            }

1 个答案:

答案 0 :(得分:1)

方法2的想法是正确的(使用命名注册),但是您有一个C#语法错误。使用方法是:

container.RegisterType(typeof(IRunAtStartup), type, type.AssemblyQualifiedName);