【发布时间】:2012-02-28 09:09:33
【问题描述】:
我有一个数据处理应用程序,它有几个工作流程可以提取数据并生成报告。
工作流采用数据提取器列表和报告服务。
要运行的工作流是在运行时确定的。
我已经使用结构映射配置了工作流创建,给定一个工作流键,它将生成一个工作流实例。我是结构图的新手,这里是我必须工作的第一个配置。
这看起来是正确的还是我错过了什么?有没有更好的配置方法?
这里是注册表类:
class WorkflowRegistry : Registry
{
public WorkflowRegistry()
{
var container = new Container(x =>
{
x.For<DossierExtraction.Library.Interfaces.IProgressReporter>().Use<ProgressReporter>();
x.For<IDossierService>().Use<DossierService>();
x.For<IReportingService>().Use<VendorReportingService>().Named("VendorReport");
x.For<IReportingService>().Use<ClientReportingService>().Named("ClientReport");
});
For<IWorkflow>().Add(x => new GenericWorkflow(
new List<IExtractionService>() { container.GetInstance<DossierExtractor>(), container.GetInstance<NativeExtractor>(), container.GetInstance<TranslationExtractor>() },
container.GetInstance<IReportingService>("VendorReport")
)).Named("VendorWorkflow");
For<IWorkflow>().Add(x => new GenericWorkflow(
new List<IExtractionService>() { container.GetInstance<TranslationExtractor>() },
container.GetInstance<IReportingService>("ClientReport")
)).Named("Clientflow");
}
}
这是一个 sn-p,显示了我的应用程序中注册表类的用法。
ObjectFactory.Initialize(x =>
{
x.AddRegistry<WorkflowRegistry>();
});
var workflow = ObjectFactory.GetNamedInstance<IWorkflow>(workflowKey);
workflow.Run();
【问题讨论】:
标签: .net dependency-injection structuremap dsl