Unity中的注册表等效项

Mic*_*ael 6 unity-container

是否有任何与Unity中的StructureMap的Registry类相同的东西?

我喜欢考虑一个层/组件/库来自我配置 - 从而填充容器.所以"父"层只需要知道注册类.

Jer*_*ebe 6

不,没有.在我们当前的项目中,我们已经手动模仿了注册表的概念,尽管我们的实现并不像StructureMap注册表那样强大.

如果你想要的只是模块化的容器配置,你可以做的是创建一个标记接口(可能是IRegistry),然后让你的应用程序扫描IRegistry类.使用Unity,您可以解析尚未注册到Unity的类,因此您可以在找到它时简单地解析每个IRegistry实现.注册表类可以将容器作为构造函数参数,然后每个类可以根据需要为该层/组件/库配置容器.

public interface IRegistry 
{ 
    void Configure();
}

public class ServicesRegistry : IRegistry
{
    public ServicesRegistry(IUnityContainer container)
    {
        _container = container;
    }

    public sub Configure()
    {
        // Configure container for layer
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在您的应用程序启动的某个地方,您可以拥有一个应用程序引导程序,它可以了解您的所有注册表或知道如何扫描它们.