2017-05-21 3 views
0

私は Luis action binding sample on GitHubボットフレームワークとリポジトリデザインパターン依存性注入

私はバインディングアクションにデータ・サービス・インスタンスを渡すために、依存性注入を使用する以下のサンプルのようにバインドルイス・ルイス・アクションを使用してボットアプリケーションを作成しています

私はそのようなリポジトリの設計パターン、次のデータ層を追加します。

public class ProviderService : IProviderService 
{ 
    private readonly IProviderRepository ProviderRepository; 
    private readonly IUnitOfWork UnitOfWork; 

    public ProviderService(IProviderRepository providerService, IUnitOfWork unitOfWork) 
    { 
     this.ProviderRepository = providerService; 
     this.UnitOfWork = unitOfWork; 
    } 

    public void CreateProvider(Provider provider) 
    { 
     ProviderRepository.Add(provider); 
    } 

や目などのアクション・バインディング・クラスで満たす方法から、それを使用しますここで

public class FindNumberAction : BaseLuisAction 
{ 
    IProviderService _provider; 

    [Required(ErrorMessage = "Please provide a ProviderName")] 
    public string Provider { get; set; } 

    public string ProviderType { get; set; } 

    public FindNumberAction() : this(new ProviderService(new ProviderRepository(new DbFactory()), new UnitOfWork(new DbFactory()))) 
    { 

    } 

    public FindNumberAction(IProviderService provider) 
    { 
     _provider = provider; 
    } 

    public override Task<object> FulfillAsync() 
    { 
     var providerData = _provider.GetByProviderName(Provider); 
     if (!string.IsNullOrEmpty(providerData.ProviderAddress)) 
     { 
      var result = new ProviderInfo 
      { 
       ProviderAddress = providerData.ProviderAddress, 
       ProviderName = providerData.Provider.ProviderName, 
       ProviderPhone = providerData.ProviderPhone, 
       ProviderType = providerData.Provider.ProviderType.ProviderTypeName 
      }; 
      return Task.FromResult((object)result.GetNumber()); 
     } 

     return Task.FromResult((object)new ProviderInfo() { ProviderName = Provider, ProviderType = ProviderType }.NoProviderNumberFound()); 
    } 
} 
+0

質問は何ですか? –

+0

findnumberactionで手動でインスタンスを作成する代わりに、providerserviceにdependency injectionを使用する方法 –

+0

https://stackoverflow.com/questions/39826517/how-to-use-autofac-to-initialize-your-own-componentsの可能な複製 –

答えて