2016-04-22 13 views
1

今、私はコンテナを構成した、動作しますが、値の場合、このプロパティはnull構造マップ4プロパティインジェクション

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

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

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

をし、クラスで私は、このプロパティを使用したい理由setterプロパティ私は取得できませんでした:

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

おそらく問題は私がUserRepositoryにコンストラクタを持っているということですか?

private readonly IRequestRepository _repository; 

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

構造マップのドキュメントでは、私たちは注入するインターフェイス、なぜクラスではないのですか?私は、コンストラクタとインターフェイスを宣言するsetterプロパティを意味します。私の問題のため

答えて

0

簡単な解決策は.Setterを使用することです:

_.For<IRssRepository>().Use<RssRepository>() 
.Setter<IRequestRepository>().Is<RequestRepository>(); 
関連する問題