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();
});
这有点乏味,但我不认为你经常需要做很多财产注入
希望这能有所帮助。我自己也尝试过实现,但没有成功(我没有太多编程经验)。经过更多的研究,我决定切换回构造函数注入。大多数时候,构造函数注入是一个更好的选择。它确保您的对象使用所有必需的依赖项进行初始化。我尝试自己实现它,但没有成功(我没有太多编程经验)。经过更多的研究,我决定切换回构造函数注入。大多数时候,构造函数注入是一个更好的选择。它确保您的对象使用所有必需的依赖项进行初始化。我没有想到这一点,这在大多数情况下都会起作用,谢谢!我没想过,这在大多数情况下都是有效的,谢谢!