相关疑难解决方法(0)

如何注册所有类型的接口并统一获取它们的实例?

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)

c# structuremap unity-container

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

structuremap ×1

unity-container ×1