2016-05-22 10 views
0

私が持っているクラスがあります。リポジトリでサービスを初期化するためにninjectを使用する必要がありますか?

IMessageRepository messageRepository; 
IMessageService messageService; 

は、私はそれらの両方を初期化するために、クラスのコンストラクタにし、そのせいで使用ninjectのそれらの両方を置くべきか?

public MessageController(IMessageRepository messageRepository, IMessageService messageService) 
    { 
     this.messageRepository = messageRepository; 
     this.messageService = messageService; 
    } 

または、メッセージリポジトリをninjectから取得し、メッセージサービスを初期化する必要がありますか? (コンストラクタでIMessageRepositoryが必要です)

public MessageController(IMessageRepository messageRepository) 
    { 
     this.messageRepository = messageRepository; 
     this.messageService = new MessageService(messageRepository); 
    } 

答えて

2

コンストラクタのパラメータに両方を入れることをお勧めします。

今後、IMessageRepositoryという別の実現方法がある可能性があります。

さらに、クラス外の依存関係をより詳細に制御できます(たとえば、ControllerServiceでは異なるリポジトリを使用する必要があります)。

希望すると助かります。

関連する問題