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());
}
}
質問は何ですか? –
findnumberactionで手動でインスタンスを作成する代わりに、providerserviceにdependency injectionを使用する方法 –
https://stackoverflow.com/questions/39826517/how-to-use-autofac-to-initialize-your-own-componentsの可能な複製 –