扫描和覆盖使用WithParameter的autofac注册
作为autofac初始化的一部分,我扫描程序集列表并注册任何符合命名约定的服务:MyClass:IMyClass。这减少了注册码的数量,所以我真的不想取消这个功能。问题是我有几个类,我想使用一些特定的初始化数据注册它们。我目前正在扫描过程后使用以下方式注册这些文件:扫描和覆盖使用WithParameter的autofac注册,autofac,Autofac,作为autofac初始化的一部分,我扫描程序集列表并注册任何符合命名约定的服务:MyClass:IMyClass。这减少了注册码的数量,所以我真的不想取消这个功能。问题是我有几个类,我想使用一些特定的初始化数据注册它们。我目前正在扫描过程后使用以下方式注册这些文件: builder.RegisterType<MyClass>().As<IMyClass>().WithParameter("initData", value) builder.RegisterType().
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”));
根据您的建议,我编写了测试,测试结果与预期相符。在容器中看到多个注册似乎有点奇怪,但这并不重要,只要它正确解析并且正确。我不知道为什么这在我的应用程序代码中不起作用。一定是别的什么…在你的建议下,我写了测试,它的工作如预期。在容器中看到多个注册似乎有点奇怪,但这并不重要,只要它正确解析并且正确。我不知道为什么这在我的应用程序代码中不起作用。一定是别的东西。。。