Asp.net mvc 属性注入导致StackOverflowException
我是AutoFac的新手,我正在尝试用我在AutoFac注册的实例自动注入我的属性Asp.net mvc 属性注入导致StackOverflowException,asp.net-mvc,dependency-injection,autofac,property-injection,Asp.net Mvc,Dependency Injection,Autofac,Property Injection,我是AutoFac的新手,我正在尝试用我在AutoFac注册的实例自动注入我的属性 public class PersonalDataProvider { public ISocialAppUnitOfWork SocialAppUnitOfWork { get { var resolver = Setup(); return resolve
public class PersonalDataProvider
{
public ISocialAppUnitOfWork SocialAppUnitOfWork
{
get
{
var resolver = Setup();
return resolver.Resolve<ISocialAppUnitOfWork>();
}
}
private IContainer Setup()
{
var builder = new ContainerBuilder();
builder.RegisterType<ISocialAppUnitOfWork>().PropertiesAutowired();
return builder.Build();
}
}
公共类PersonalDataProvider
{
公共ISocialAppUnitOfWork社会应用UnitOfWork
{
得到
{
var解析器=Setup();
返回解析器.Resolve();
}
}
专用IContainer设置()
{
var builder=new ContainerBuilder();
builder.RegisterType().PropertiesAutowired();
返回builder.Build();
}
}
导致异常的行:builder.RegisterType().PropertiesAutowired()
我想获得提供商的ISocialAppUnitOfWork
我不确定现在发生了什么,如果有任何帮助,我将不胜感激。可能是因为安装代码在您试图连接的类中。Jamie您的公共财产
SocialAppUnitOfWork
被公开是出于什么原因?无论使用什么,都应该依赖于isocalAppUnitOfWork
,而不是从PersonalDataProvider
@wal获取它,因为我需要在SocialAppUnitOfWork中查找某些内容。在我的视图中,我需要从这个接口获取一行代码。否则,我需要为它创建一个新的控制器。PersonalDataProvider
在哪里获得新设置?您应该改为向Autofac注册PersonalDataProvider
,该类应该(通过ctor)依赖于ISocialAppUnitOfWork
。您不能这样做builder.RegisterType()
(假设您的ISocialAppUnitOfWork是一个接口),因为您没有定义具体的实现是什么。使用Autofac,您不应该以这种方式构建/注册(即每次调用SocialAppUnitOfWork属性时)-您需要注册一次,然后保留对IContainer的引用。