如何在Unity中获取所有接口实例并访问它们?
代码片段来自于这里:Fail-Tracker 在StructureMap中,可以注册程序集中所有接口类型,然后像以下代码一样访问它们:
代码片段来自于这里:Fail-Tracker 在StructureMap中,可以注册程序集中所有接口类型,然后像以下代码一样访问它们:
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());
});
然后可以访问实现这些接口的所有类型,例如:
using (var container = ObjectFactory.Container.GetNestedContainer())
{
foreach (var task in container.GetAllInstances<IRunAtInit>())
{
task.Execute();
}
foreach (var task in container.GetAllInstances<IRunAtStartup>())
{
task.Execute();
}
}
这段代码在Unity中的等效代码是什么?
如何在Application_BeginRequest中使用StructureMap获取它们?
public void Application_BeginRequest()
{
Container = ObjectFactory.Container.GetNestedContainer();
foreach (var task in Container.GetAllInstances<IRunOnEachRequest>())
{
task.Execute();
}
}