Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
扫描和覆盖使用WithParameter的autofac注册_Autofac - Fatal编程技术网

扫描和覆盖使用WithParameter的autofac注册

扫描和覆盖使用WithParameter的autofac注册,autofac,Autofac,作为autofac初始化的一部分,我扫描程序集列表并注册任何符合命名约定的服务:MyClass:IMyClass。这减少了注册码的数量,所以我真的不想取消这个功能。问题是我有几个类,我想使用一些特定的初始化数据注册它们。我目前正在扫描过程后使用以下方式注册这些文件: builder.RegisterType<MyClass>().As<IMyClass>().WithParameter("initData", value) builder.RegisterType().

作为autofac初始化的一部分,我扫描程序集列表并注册任何符合命名约定的服务:MyClass:IMyClass。这减少了注册码的数量,所以我真的不想取消这个功能。问题是我有几个类,我想使用一些特定的初始化数据注册它们。我目前正在扫描过程后使用以下方式注册这些文件:

builder.RegisterType<MyClass>().As<IMyClass>().WithParameter("initData", value)
builder.RegisterType().As().WithParameter(“initData”,value)
当我检查容器时,我可以看到两个注册,一个来自扫描过程,另一个带有指定参数。这是正确的行为吗?我想用autofac代替IMyClass的扫描注册。如何使用提供的参数让autofac使用注册


谢谢,

容器将保留两个注册,但只使用最后一个注册。您是否进行了测试以验证您预期的行为?大致如下:

var my = container.Resolve<IMyClass>();
Assert.That(my.Data, Is.EqualTo("initData"));
var my=container.Resolve();
Assert.That(my.Data,Is.EqualTo(“initData”));

容器将保留两个注册,但只使用最后一个注册。您是否进行了测试以验证您预期的行为?大致如下:

var my = container.Resolve<IMyClass>();
Assert.That(my.Data, Is.EqualTo("initData"));
var my=container.Resolve();
Assert.That(my.Data,Is.EqualTo(“initData”));

根据您的建议,我编写了测试,测试结果与预期相符。在容器中看到多个注册似乎有点奇怪,但这并不重要,只要它正确解析并且正确。我不知道为什么这在我的应用程序代码中不起作用。一定是别的什么…在你的建议下,我写了测试,它的工作如预期。在容器中看到多个注册似乎有点奇怪,但这并不重要,只要它正确解析并且正确。我不知道为什么这在我的应用程序代码中不起作用。一定是别的东西。。。