Unity如何获取接口的所有实例然后访问它们?
代码片段取自此处:Fail-Tracker
在StrcutureMap中,可以从程序集中注册所有类型的接口,然后访问它们,如下所示:
public class TaskRegistry : Registry
{
public TaskRegistry()
{
Scan(scan =>
{
scan.AssembliesFromApplicationBaseDirectory(
a => a.FullName.StartsWith("FailTracker"));
scan.AddAllTypesOf<IRunAtInit>();
scan.AddAllTypesOf<IRunAtStartup>();
scan.AddAllTypesOf<IRunOnEachRequest>();
scan.AddAllTypesOf<IRunOnError>();
scan.AddAllTypesOf<IRunAfterEachRequest>();
});
}
}
ObjectFactory.Configure(cfg =>
{
cfg.AddRegistry(new TaskRegistry());
});
Run Code Online (Sandbox Code Playgroud)
然后访问实现这些接口的所有类型,如:
using (var container = ObjectFactory.Container.GetNestedContainer())
{
foreach (var task in container.GetAllInstances<IRunAtInit>())
{
task.Execute();
}
foreach (var task in container.GetAllInstances<IRunAtStartup>())
{
task.Execute();
}
}
Run Code Online (Sandbox Code Playgroud)
这个代码在统一中的等价物是什么?
我如何在Application_BeginRequest中获得这些结构图
public void Application_BeginRequest()
{
Container = ObjectFactory.Container.GetNestedContainer();
foreach (var task in Container.GetAllInstances<IRunOnEachRequest>())
{
task.Execute();
}
}
Run Code Online (Sandbox Code Playgroud)