【发布时间】:2017-05-22 21:24:30
【问题描述】:
我正在使用 Luis 和 Luis Action Binding 创建一个机器人应用程序,如下例所示 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());
}
}
【问题讨论】:
-
问题是什么?
-
如何对providerservice使用依赖注入,而不是在findnumberaction中手动创建实例
标签: c# dependency-injection botframework azure-language-understanding