在构建时验证Microsoft Unity依赖项

本文关键字:Unity 依赖 Microsoft 验证 构建 | 更新日期: 2023-09-27 18:12:17

是否有方法在构建时验证Unity依赖?

我们正在从一个接口迁移到另一个接口进行日志记录,并且遇到了我们在更改后无法更新依赖类的情况。不幸的是,这直到运行时才被发现。

是否有在构建时检查这个的策略?理想情况下,它将在具有Build Solution的开发人员机器上完成,但是我很高兴在我们的持续集成环境上运行检查。

在构建时验证Microsoft Unity依赖项

如果我正确理解了你的问题,你有几个不同的应用程序,它们都共享共同的项目。应用程序A和应用程序B都注册来自项目1的依赖项。在某些时候,应用程序a的开发人员向项目1添加了新的接口,并在那里注册了新的依赖项。但是,没有人记得应用程序B,然后当您构建/部署应用程序B时,您发现了问题。对吗?

假设是这种情况,那么有一个简单的方法来修复它,那就是让项目1负责注册它自己的依赖项。创建一个这样的类:

public static class UnityHelper
{
    public static void RegisterTypes<T>(IUnityContainer container)
        where T : LifetimeManager
    {
        container.RegisterType<ISomething, Something>(Activator.CreateInstance<T>());
    }
}

然后当你注册依赖时,你只需调用你的新类。在应用程序A和b中执行此操作。

public static void RegisterTypes(IUnityContainer container)
{
    UnityHelper.RegisterTypes<ContainerControlledLifetimeManager>(container);
}

现在A和B再也不用担心项目1的情况了。任何时候创建新的依赖项,您只需将它们添加到UnityHelper,您的应用程序就会自动获得它们。

如果你需要同一接口的多个注册,你可以给它们命名,然后在构造函数中引用它们的名字。

container.RegisterType<ISomething, Something1>(Activator.CreateInstance<T>(UnityConstants.SOMETHING1));
container.RegisterType<ISomething, Something2>(Activator.CreateInstance<T>(UnityConstants.SOMETHING2));
public MyClass([Dependency(UnityConstants.SOMETHING1) ISomething something1, 
    [Dependency(UnityConstants.SOMETHING2) ISomething something2)
{
}