结构图 4 属性 注入

structure map 4 property injection

我不明白为什么 setter 属性 现在可以工作了,我已经配置了容器,但是值 if this 属性 null

container.Configure(_ =>
{
    _.Policies.FillAllPropertiesOfType<IUserRepository>().Use<UserRepository>();

    _.For<IRequestRepository>().Use<RequestRepository>()
    .SetLifecycleTo(uniqueRequest);

    _.For<IRssRepository>().Use<RssRepository>();
    _.For<IUserRepository>().Use<UserRepository>();
});

然后在 class 中使用这个 属性:

[SetterProperty]
public IUserRepository UserRepository { get; set; }

也许问题是我在 UserRepository 中有构造函数?

private readonly IRequestRepository _repository;

public UserRepository(IRequestRepository repository)
{
    _repository = repository;
}

还有问题,在结构图文档中我们注入接口,为什么不class?我的意思是在构造函数中,我们使用 setter 属性 声明接口。

我的问题的简单解决方案是使用 .Setter:

_.For<IRssRepository>().Use<RssRepository>()
.Setter<IRequestRepository>().Is<RequestRepository>();