C# Autofac注入空
我对.NET 3.5的Autofac 2.5.2.830有一个非常奇怪的问题: I userC# Autofac注入空,c#,.net,autofac,C#,.net,Autofac,我对.NET 3.5的Autofac 2.5.2.830有一个非常奇怪的问题: I userbuilder.RegisterAssemblyTypes注册程序集中的类型: builder.RegisterAssemblyTypes("My.*.dll").Where(x => x.Name.EndsWith("Service")) .AsImplementedInterfaces(); 我有几个类依赖于IC
builder.RegisterAssemblyTypes
注册程序集中的类型:
builder.RegisterAssemblyTypes("My.*.dll").Where(x => x.Name.EndsWith("Service"))
.AsImplementedInterfaces();
我有几个类依赖于IConfigService
。该接口的具体实现者的一个实例被注入到它们中,但在类上被注入null
。对我来说,这看起来像是一种错误,因为我可以使用断点使它消失。然而,即使这是不确定的:有时,当我在类中设置一个断点,通常注入
null
时,错误也会消失,有时甚至在插入断点时也会注入null
。在先前创建的其中一个类中设置断点并依赖于IConfigService
会导致将值而不是null
注入有问题的类中。即使从构建器中删除一个完全不相关的注册,也会导致错误消失一次。然而,有一件事似乎是不变的:总是同一个类接收
null
我不知道从哪里开始解决这个问题。这样的事情大家都知道吗?null
注入的原因可能是什么
更新哦,天哪,这太愚蠢了 构造函数如下所示:
public EmailNotifier(IConfigurationService configService)
{
_mailServerAddress = _configService.Get(Resources.MailServerAddress,
Resources.DefaultSenderAddress);
_configService = configService;
}
运行时,这在构造函数的第一行给了我一个NullReferenceException
,因为\u configService
是null
。看起来,当我设置断点时,有时检查configService
是否为null
,有时检查\u configService
是否为null。正因为如此,有时我会被注入null
,有时则不会
摘要这不是Autofac的问题,因为从未注入
null
configService
总是有一个值。您能为“接收空值的同一类”发布一些代码吗?尤其是构造函数
如果你在构造器中设置了一个断点,你能确认空值是可以看到的吗?不是说它会在以后的某个地方被覆盖吗
我的猜测是类中的某个地方出了问题。您能为“接收空值的同一类”发布一些代码吗?尤其是构造函数。如果你在构造器中设置了一个断点,你能确认空值是可以看到的吗?不是说它会在以后的某个地方被覆盖吗?我猜课堂上某个地方出了问题。@Stuart:谢谢你的评论。它让我剥离了ctor,这样我就可以把它复制到so,这样我就发现了错误。请查看更新…;-)不,让我们把它作为一个答案:)(我自己做了好几次……虽然通常是因为我没有把引用复制到成员变量上),我相信有一个公平的机会,其他人也会用谷歌搜索同样的问题:)这不是“那么愚蠢”——这是人类的状况@斯图尔特:谢谢你让我感觉好一点…;-)@丹尼尔呸!你让我担心了一会儿:)