Asp.net mvc 属性注入导致StackOverflowException

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

我是AutoFac的新手,我正在尝试用我在AutoFac注册的实例自动注入我的属性

  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的引用。