Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Autofac测试可以解析所有注册的类型_C#_Autofac - Fatal编程技术网

C# Autofac测试可以解析所有注册的类型

C# Autofac测试可以解析所有注册的类型,c#,autofac,C#,Autofac,我在Autofac注册了一系列类型,其中一些依赖性相当深。是否有一种内置的测试方法可以解析所有注册的类型?我希望在应用程序启动时快速失败,而不是几分钟后半路失败 这就是我目前正在做的,而且似乎很有效,但我仍然想知道是否有更好的方法 public void VerifyAllRegistrations() { foreach (IComponentRegistration registration in _container.ComponentRegistratio

我在Autofac注册了一系列类型,其中一些依赖性相当深。是否有一种内置的测试方法可以解析所有注册的类型?我希望在应用程序启动时快速失败,而不是几分钟后半路失败

这就是我目前正在做的,而且似乎很有效,但我仍然想知道是否有更好的方法

    public void VerifyAllRegistrations()
    {
        foreach (IComponentRegistration registration in _container.ComponentRegistrations)
        {
            bool isNewInstance;
            registration.ResolveInstance(_container, new Parameter[0], new Disposer(), out isNewInstance);
        }            
    }

    private class Disposer : IDisposer
    {
        public void Dispose()
        {
            // no-op
        }

        public void AddInstanceForDisposal(IDisposable instance)
        {
            instance.Dispose();
        }
    }

Autofac没有提供任何这样的功能-因为Autofac创建组件是为了响应ResolveInstance,所以您将面临构造函数的副作用等

集成测试是解决这一问题的最佳方法。

您可以试试