C# 接口成员的属性注入

C# 接口成员的属性注入,c#,autofac,C#,Autofac,我可以使用以下代码进行属性注入: builder.RegisterType<ListViewModel>() .PropertiesAutowired(); 有可能出现以下情况吗 builder.RegisterType<ListViewModel>() .InjectForInterface<IHasCommonServices>(); builder.RegisterType() .InjectForInterface(); 谢谢。我

我可以使用以下代码进行属性注入:

builder.RegisterType<ListViewModel>()
    .PropertiesAutowired();
有可能出现以下情况吗

builder.RegisterType<ListViewModel>()
    .InjectForInterface<IHasCommonServices>();
builder.RegisterType()
.InjectForInterface();

谢谢。

我不确定这是否是你想要的,但我认为在大多数情况下,你可以侥幸逃脱:

.PropertiesAutowired(PropertyWiringFlags.PreserveSetValues);
如果需要更细粒度的控件,可以使用OnActivated:

builder.Register<ListViewModel>()
       .As<IHasCommonServices>()
       .OnActivated(c => 
                    {
                        c.Instance.Session = c.Context.Resolve<ISession>();
                        c.Instance.EventPublisher = c.Context.Resolve<IEventPublisher>();
                    });
builder.Register()
.As()
.on已激活(c=>
{
c、 Instance.Session=c.Context.Resolve();
c、 Instance.EventPublisher=c.Context.Resolve();
});
这有点乏味,但我不认为你经常需要做很多财产注入


希望这会有所帮助。

不确定这是否是您所追求的,但我认为在大多数情况下,您可以侥幸逃脱:

.PropertiesAutowired(PropertyWiringFlags.PreserveSetValues);
如果需要更细粒度的控件,可以使用OnActivated:

builder.Register<ListViewModel>()
       .As<IHasCommonServices>()
       .OnActivated(c => 
                    {
                        c.Instance.Session = c.Context.Resolve<ISession>();
                        c.Instance.EventPublisher = c.Context.Resolve<IEventPublisher>();
                    });
builder.Register()
.As()
.on已激活(c=>
{
c、 Instance.Session=c.Context.Resolve();
c、 Instance.EventPublisher=c.Context.Resolve();
});
这有点乏味,但我不认为你经常需要做很多财产注入


希望这能有所帮助。

我自己也尝试过实现,但没有成功(我没有太多编程经验)。经过更多的研究,我决定切换回构造函数注入。大多数时候,构造函数注入是一个更好的选择。它确保您的对象使用所有必需的依赖项进行初始化。我尝试自己实现它,但没有成功(我没有太多编程经验)。经过更多的研究,我决定切换回构造函数注入。大多数时候,构造函数注入是一个更好的选择。它确保您的对象使用所有必需的依赖项进行初始化。我没有想到这一点,这在大多数情况下都会起作用,谢谢!我没想过,这在大多数情况下都是有效的,谢谢!